Ich habe Temperaturmesswerte von einem Erwärmungsversuch. Jetzt möchte ich wissen, wie der Temperaturverlauf weitergehen würde. Wie könnte ich das mit Matlab machen?
Ich habe mal in der Hilfe nachgeschaut und festgestellt, dass man mit Interp1 eine Extrapolation machen kann. Ich versteh aber nicht wie?
Kann mir jemand helfen?
Allerdings kommt es sehr auf die Daten an, ob dabei was "vernünftiges" bei rauskommt. Häufig besser: man "weiß", dass die Daten sich z.B. exponentiell verhalten. Dann macht man einen Fit (zu Fuß oder mit Hilfe der Curve Fitting Toolbox oder der Optimization Toolbox), den man dann auch außerhalb des Intervalls auswerten kann ...
Ich beschreibe mal mein Problem genauer. Ich habe zum einen ein Zeitverlauf (mehrere Werte) für x und ein Temperaturverlauf (mehrere Werte )bei y. Ich verstehe den Wert
xi nicht. Also bei Titus's Beispiel die Zahl 5.
der Wert xi ist der Punkt an dem interpoliert (oder extrapoliert) wird. In meinem Beispiel wäre [1 2 3] der gemessene Zeitbereich, [3 4 5] der gemessene Temperaturverlauf und 5 die Zeit, an der ich extrapolieren möchte (bei 'linear' müsste entsprechend der Wert 7 rauskommen als Verlängerung der Gerade). Oder grafisch:
es hängt sehr von den Daten ab, was hier sinnvoll ist.
Eine Alternative könnte sein, mittels Regression (z.B. nlinfit) ein Modell an die Daten anzupassen und das zur Vorhersage zu verwenden.
Vielleicht kannst du ja deine Daten oder einen Plot davon zur Verfügung stellen? Dann kann man mehr dazu sagen, was Sinn macht und was nicht.
Noch eine Frage:
wenn ich das so wie Titus vorgeschlagen hat mache, muss ich aber schon vorher wissen, welche Temperatur ich zum Beispiel nach weiteren 3000 sec habe. Aber das kann ich ja nicht wissen. Das heißt das ganze basiert nur auf grobe annhamen. Bei diesem Erwärmungsversuch tritt nach bestimmten Zeit Beharrung auf. (Temperatur bleibt konstant)
Gibt es eine Möglichkeit, in Titus's Beispiel eine bestimmte Funktion einzubauen? Zum Beispiel e Funktion oder so etwas?
Noch eine Frage:
wenn ich das so wie Titus vorgeschlagen hat mache, muss ich aber schon vorher wissen, welche Temperatur ich zum Beispiel nach weiteren 3000 sec habe. Aber das kann ich ja nicht wissen.
Wie kommst du denn da drauf? Du gibst einen Zeitwert in der Zukunft vor und dazu wird dir der entsprechende Y Wert (= Temp.) extrapoliert...mal unabhängig von der Genauigkeit der Extrapolation.
Titus hätte eher schreiben müssen y5 = interp1(...) an der Stelle für x=5. Das x5 als Ergebnis war da etwas irreführend.
Edit:
Zitat:
Bei diesem Erwärmungsversuch tritt nach bestimmten Zeit Beharrung auf. (Temperatur bleibt konstant)
...d.h du hast eine Sättigungsfunktion (e-Funktion)?
eine Interpolation wird niemals Modellierungskomponenten enthalten, sondern einfach nur stückweise Geraden oder Polynome durch die Daten legen. Eine Interpolation ist da wenig aussagekräftig.
Wenn du eine Sättigung oder ähnliches vorgeben möchtest, musst du den von mir vorgeschlagenen Ansatz der Regression wählen, z.B. mit einem Modell wie y = a*exp(-b*x) + c.
Wenn du relativ neu in MATLAB bist, tust du dir vielleicht mit der Curve Fitting Toolbox am leichtesten:
Ich habe noch mal mir genauer meine Messwerte angesehen und mir ist aufgefallen, dass die Messwerte nicht so sind 1 2 3 4 sondern 1 2 2 3 4 4 usw. er nimmt dann immer den letzten Messwert. Das heißt es ist jedesmal eine Horizontale Linie.
Dann ist es aber nicht exponentiell. Man kann es dann eher mit einer Art Treppenfunktion vergleichen. Hast du mal die Methode von Harald ausprobiert? Ist natürlich nichts um das Ganze zu automatisieren, aber zumindest mal ein Ansatz.
Kannst du nicht mal einen plot(x,y) deiner Daten erstellen und hier posten?
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.