ich habe ein numerisch berechnetes Strömungsfeld. Dieses lasse ich mir in 6 Vektoren ausgeben (3 Ortsvektoren: x,y,z und 3 Geschwindigkeitsvektoren: u,v,w).
Excel-Auszug (sortiert nach x-Koordinate):
Ich habe in MatLab ein Programm, welches zu jedem Ortspunkt (x,y,z) ein Geschwindigkeitsfeld (u,v,w) braucht. Dazu muss natürlich zwischen meinen diskreten Werten aus den oben genannten Vektoren interpoliert werden. Ich war leider nicht in der Lage dies zu bewerkstelligen. Ich habe in der MatLab-Hilfe von einem flow(n) und Interpolating Scattered Data-Befehlen gelesen, aber konnte sie nicht anwenden.
Hat hier jemand Ideen bzw. Vorschläge, wie ich an dieses Problem herangehen kann? Ich brauche eine Funktion, die mir zu einem bestimmten Ortspunkt die 3 Geschwindigkeitskomponenten u,v,w ausgibt, um damit weiterrechnen zu können. Das Einlesen der Daten von Excel nach MatLab kann ich!
So wie ich es mir vorstelle:
- jede Zeile in der Excel-Datei gehört zusammen
- mein gesuchter Ortspunkt wird sich zwischen 2 Excel-Zeilen befinden
- (lineare) Interpolation des Ortes
- daraus (lineare) Interpolation der Strömungsgeschwindigkeitskomponenten
in den Beispielen ergibt sich V durch Funktionsauswertung, das können aber auch Messwerte sein.
Meines Erachtens müsste es funktionieren, wenn du die ersten 4 Spalten als erste 4 Inputs übergibt. Bitte Daten in kopierbarer Form zur Verfügung stellen, dann kann man sowas auch mal eben testen.
anbei ein Strömungsfeld in einem kurzen Zylinderstück mit einer Kugel in der Mitte (Kugelumströmung).
Leider verwirren mich deine gut gemeinten Ansätze grade ein bisschen
Danke und Grüße
PS: ich habe gerade das Beispiel durchgemacht, welches sich in der Hilfe unter interpn findet. Mit dem Befehl: VI=interpn(v,1,1,3,2) bekomme ich VI = 0.1888. Das ist wohl der Funktionswert bei den 4 Parametern. Ich brauche aber nicht einen Funktionswert an dieser Stelle bzw. bei diesem Parametersatz, sondern meine 3 Strömungsgeschwindigkeiten.
u = TriScatteredInterp(data(:,1), data(:,2), data(:,3), data(:,4));
Jetzt habe ich (nur für die Geschwindigkeitskomponente u) für u ein X (65535x3) und ein V (65535x1) mit Method "linear" - soweit so gut. Dein nächster Befehl soll jetzt meine gesuchte interpolierte Geschwindigkeitskomponente needed_u berechnen oder? Dazu habe ich einfach mal Werte eingesetzt, z.B.:
needed_u = u(0.001, 0.001, 0.001);
und er spuckt ein NaN aus
Ich habe schon geschaut, also es kommen nirgendwo in meinen Beispieldaten NaNs vor.
ich bin natürlich ein Depp! Du hast vollkommen recht, ich war außerhalb des Definitionsbereichs . Ich habe auch sogleich mit Excel linear-interpolierte Werte erzeugt und sie mit deiner Funktion abgeglichen - es passt hervorragend .
Ein herzliches Dankeschön, ich werde jetzt weiter rumbasteln und hoffe auf keine weiteren Probleme.
Merci!
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.