Verfasst am: 24.03.2014, 13:03
Titel: interp2als Funktion in ode45
Hallo,
ich versuche seit einiger Zeit den interp2-Befehl in die ode45-Funktion einzubinden.
Im 1-D Fall klappt es auch wunderbar, aber im 2-D Fall bekomme ich folgende Fehlermeldung:
Code:
??? Subscript indices must either be real positive integers or logicals.
Error in ==> interp2>linear at 344
F = ( arg3(ndx).*(onemt) + arg3(ndx+1).*t).*(1-s) + ...
Error in ==> interp2 at 220
zi = linear(ExtrapVal,x,y,z,xi,yi);
vielen Dank für deine Hilfe. Es funktioniert jetzt.
Kannst du mir auch erklären, wieso es mit griddata funktioniert (matlab merkt hier übrigens an: "not recommended, use TriScatteredinterp instead") und mit interp2 zu Problemen kommt?
(matlab merkt hier übrigens an: "not recommended, use TriScatteredinterp instead")
Du kannst ja mal TriScatteredInterp versuchen.
Zitat:
Kannst du mir auch erklären, wieso es [...] interp2 zu Problemen kommt?
Ist mir auch nicht klar, insbesondere da es ja in neueren Releases möglich ist.
Grüße,
Harald
Ahnungslos
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.03.2014, 12:21
Titel:
Dann nochmals vielen Dank!
Ich werde mich dann an griddata, bzw. TriScatteredInterp halten.
Ahnungslos
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.03.2014, 13:15
Titel:
Hallo,
noch eine Anmerkung von mir:
Mit griddata funktioniert der ode-Befehl jetzt zwar, jedoch ist die Interpolation nicht sinnvoll für meinen Fall.
Liegt vermutlich daran, dass ich keine verteilten Datenpunkte habe, sondern gleichverteilte.
So wie ich die Dokumentation von griddata verstanden habe nutzt dieser eine Delaunay-Triangulation, die bei einem gleichverteilten Gitter von Werten so richtig anwendbar ist.
Ahnungslos
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 26.03.2014, 15:13
Titel:
Hallo,
habe den Fehler mitlerweile gefunden.
Es lag daran, dass kein Extrapolationswert in interp2 angegeben war. Daher erzeugte das Programm innerhalb von ode45 den Wert NaN, sobald er das Gebiet verlassen hat.
Mit einer extrapval-Angabe läuft es durch.
Nun das nächste Rätsel:
Gebe ich Matlab eine 2x2 Matrix mit 4 beliebigen Einträgen auf dem Gebiet x = 1:2, y = 1:2, lasse ihn mit interp2 (mit dem Extrapolationswert 10) in 0.5-Schritten die Werte auf dem Gebiet 0.5 bis 2 bestimmen und lasse es diese mit ode45 integrieren bekomme ich die "Wege" von meinen Startkoordinaten bis zu diesem Extrapolationswert. Vollkommen unabhängig von meiner gegeben Matrix.
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.