Verfasst am: 15.09.2009, 19:36
Titel: Extrapolieren eines Kennfeldes
Hallo Leuten
ich habe ein echt riesiges Problem, ein Kennfeld zu extrapolieren. Ich habe grundsätzlich 3 Vektoren (x,y,z) mit einer Anzahl an Messpunkten. Mit der Funktion "griddata" kann ich auch erstmal ein Kennfeld erstellen, dass allerdings nur interpoliert ist.
Ich bin auch nach langer Suche nicht auf eine passende Antwort gestoßen, wie man in diesem Fall eine Extrapolation durchführen kann und wäre wirklich dankbar, wenn mir jemand einen Tipp geben kann.
Hier ist mal mein m-File, mit dem ich verschiedene Sachen ausprobiert habe (die ersten beiden Kennfelder sind aus Testzwecken mit einer z-Matrix versehen):
Bis Figure (4) geht alles wunderbar, und im Prinzip wird das Kennfeld in Figure (2) auch extrapoliert (mit der spline-Funktion geht das, mit den anderen nicht). Figure (3) gibt mir das Kennfeld mit der griddata-Funktion. ABer das kann ich einfach nicht bis an die Grenzen des meshgrids X,Y ausweiten. Die "extrapval" Funktion geht bei mir auch nicht, aber keine Ahnung warum. Vielleicht habe ich die auch falsch verstanden. Aber auch ohne sie klappt der Ablauf in Figure(4) nicht.
Wenn mir jemand helfen kann, vielen vielen Dank.
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 22.09.2009, 11:09
Titel:
Da bisher leider niemand eine Idee gehabt hat, wollte ich mal mitteilen, wie ich das gemacht habe, falls jemand ein ähnliches Problem hat.
In Matlab direkt habe ich keine vernünftige Extrapolation (außer nearest und spline) gefunden. Bin dann auf "Mathworks" auf zwei nützliche Funktionen gestoßen, mit denen man ganz gut extrapolieren kann.
Die Funktion inpaint_nans http://www.mathworks.com/matlabcentral/fileexchange/4551 bietet viele Methoden, um z.B. die "NaN" Werte in der Ergebnismatrix zu füllen. Dazu einfach das m-file runterladen und in den Workspace kopieren. Die Funktion kann dann wie gewohnt genutzt werden:
Als Methode kann man zwischen 5 Varianten wählen (1-5).
Eine weitere gute Funktion ist "Gridfit" http://www.mathworks.com/matlabcentral/fileexchange/8998. Diese funktioniert ähnlich wie griddata, nur dass gleichzeitig extrapoliert wird. Hier gibt es sehr viele Optionen, mit denen das errechnete Kennfeld bearbeitet werden kann.
Die Optionen sind ausführlich im m-file dokumentiert.
Unbedingt immer in den Vorspann des m-files sehen, um die genaue Definition der Funktionsgrößen zu verstehen. Besonders die "nodes" sind häufig nicht wie gewohnt als meshgrid vorzugeben.
Also, ich hoffe, das hilft jemandem weiter. Gut ist übrigens auch noch die Funktion interpne.
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.