Import von Daten - Problem < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 08:08 Mo 28.11.2011 | Autor: | pingi |
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Hallo liebe Mathematica-Freaks,
ich verstehe nicht, was hier in Mathematica passiert.
Der Eingabefile beinhaltet 401 Koordinatenpaare und endet mit den Werten:
...
19.7999992 -9.13599968
19.8500004 -11.6960001
19.8999996 -11.9519997
19.9500008 -12.2080002
20. -12.9759998
Wenn ich diese Daten entweder mit ReadList oder mit Import einlese, z.B.:
data = Import["00000.dat", "Table"]
dann scheint erst mal alles ok zu sein. Aber wenn ich - um einen nichtlinearen Trend aus den Daten zu entfernen - wie folgt vorgehhe:
y = LinearModelFit[data, {x, x^2}, x]
dann erhalte ich die Fehlermeldung: LinearModelFit::ivar: "{20.05} is not a
valid variable"
und das Ende des Outputs sieht folgendermassen aus:
...
{19.85, -11.696}, {19.9, -11.952}, {19.95, -12.208}, {20., -12.976}},
{20.05, 402.003}, 20.05]
Wo kommt nun das Koordinatenpaar 20.05, 402.003 her, und vor allem: was sollen die 20.05 am Ende des Outputs? Klar, 402 heisst: Zeile 402. Gibt es nicht. Und da die x-Werte von 0 bis 20.0 in Stufen zu 0.05 laufen, ist auch klar, dass 20.05 der nächste x-Wert wäre. Aber den gibt es in der Input-Datei nicht. Auch sage ich nirgendwo, dass er eine Zeie mehr einlesen soll, als vorhanden ist.
Tausend Dank für jeden Hinweis, der mir hilt, da weiter zu kommen.
Harald
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo Harald,
von den Werten her kommt es hin, dass die Variable [mm]x[/mm] vor dem Aufruf von LinearModelFit den Wert [mm]20.05[/mm] zugewiesen bekommen hat und somit nicht mehr als Platzhalter dienen kann.
Gruß,
Peter
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 11:56 Mo 28.11.2011 | Autor: | pingi |
Hallo Peter,
vielen Dank für Deine Antwort.
Ich habe in der Zwischenzeit den Namen der Variablen in der Fit-Funktion verändert - leider kein Erfolg. Diese neue Variable "a" hatte ich zuvor nicht verwendet...
Der Output sieht wie folgt aus:
LinearModelFit[{{0., 1.232}, {0.05, 1.232}, {0.1, 1.104}, {0.15,
0.976}, {0.2, 0.848}, {0.25, 0.976}, {0.3, 1.232},
---etc---
{19.95, -12.208}, {20., -12.976}}, {20., 400.}, 20.]
und ich würde gerne verstehen: Woher kommt das Koordinatenpaar 20,400 her und was soll die abschließende "20."?
Vielen Dank
Harald
|
|
|
|
|
Hallo Harald,
das ist mir auch ein Rätsel. Ich habe es bei mir mit den letzten paar Zeilen Deines Datenbeispiels probiert und alles klappt:
1: | In[1]:= data=Import[ToFileName[{$HomeDirectory,"Desktop"},"nullen.dat"],"Table"]
| 2: | Out[1]= {{19.8,-9.136},{19.85,-11.696},{19.9,-11.952},{19.95,-12.208},{20.,-12.976}}
| 3: | In[2]:= Normal[fm=LinearModelFit[data,{x,x^2},x]]
| 4: | Out[2]= 40865.2 -4091.89 x+102.4 x^2
| 5: | In[3]:= Norm[fm/@data[[All,1]]-data[[All,2]]]
| 6: | Out[3]= 0.915877 |
Falls Du die Extrafunktionen von LinearModelFit nicht brauchst, tut's vieleicht auch:1: | In[4]:= Fit[data,{1,x,x^2},x]
| 2: | Out[4]= 40865.2 -4091.89 x+102.4 x^2 |
Das Seltsame ist, dass die unerwünschten Werte wieder von der Form sind, wie von x (bzw. bei Dir nun a) in LinearModelFit vorgegeben, nämlich [mm] "$\left\{wert, wert^{2}\right\}, [/mm] wert$". Das kann doch kein Zufall sein
Wenn Du magst, kannst Du mir das fragliche Notebook an mich mailen (petsie@dordos.net) und ich versuche herauszufinden was nicht stimmt.
Gruß,
Peter
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:02 Di 29.11.2011 | Autor: | pingi |
Hallo Peter,
ich habs geschafft. Ich habe lediglich Clear[x] bzw. Clear[a] hinzugefügt. Seitdem läuft alles ganz reibungslos.
Nochmals vielen Dank für Deine Mühen.
Viele Grüße,
Harald
|
|
|
|