Verfasst am: 22.01.2013, 14:13
Titel: Meshgrid aus 3 Vektoren
Hi,
ich habe die folgenden Vektoren (siehe Excel Liste).
Jede Zeile bildet jeweils eine Wertekombination, so wird aus pt9(1) tt9(1) indirekt ex_Wirk_ges(1) berechnet, das gleiche für pt9(2) tt9(2) und ex_Wirk_ges(2) ...
Nun möchte ich, dass pt9 und tt9 ein Rechteck bilden (aus Wertekombinationen) und darüber dann zu jedem Wertepaar(punkt) ex_Wirk_ges aufgetragen wird.
Dies soll anschließend (falls man dazu nicht unbedingt eine Funktion benötigt) durch eine Surface Oberfläche dargestellt werden.
mit dem Befehl plot3 erhalte ich leider nur sehr merkwürdig verbundene Linien.
Das Problem ist,dass ich den Befehl meshgrid nicht anwenden kann, da ich einerseits meine Kombinationen schon fest vorgegeben habe (in 2 Vektoren) und ich diese dann doppelt und dreifach im mesh hätte, andererseits eben ex_Wirk_ges nur indirekt mit den Variablen pt9 und tt9 verknüpft ist.
Ich möchte quasi einfach, dass jede Wertekombination (jede Zeile) von pt9 und tt9 einen Punkt darstellen, über dem dann der Wert von ex_Wirk_ges ausgetragen wird.
Falls du unbedingt eine Oberfläche ploten willst kannst du auch griddata (oder gridfit) zum erstellen von regelmäßig verteilten Daten und mesh oder surf zum ploten verwenden.
Ja mit plot3 habe ich es schon probiert, hat mir aber nicht sonderlich gefallen. Das mit dem Interpolieren hört sich gut an, nur verstehe ich den Syntax nicht.
Ich habe in meinem Code die Vektoren pt9 , tt9 und ex_Wirk_ges . Wie baue ich die in "griddata" ein?
http://www.mathworks.de/de/help/matlab/ref/griddata.html
versteh ich nicht so recht.
Dort werden folgende 3 Schritte aufgezeigt:
1)
Code:
xy = -2.5 + 5*gallery('uniformdata',[2002],0);
x = xy(:,1); y = xy(:,2);
v = x.*exp(-x.^2-y.^2);
welche Befehle verwendest du denn, um die Grafik zu erzeugen?
In der Doku ist ein sehr klares Beispiel, wie man mit TriScatteredInterp Oberflächen erzeugen kann (man kann ja mesh durch surf ersetzen).
das Problem lag weniger an der Interpolationsmethode sondern an unsinnigen t-Werten. Wenn dein pt9 bei 1.8e5 beginnt, dann macht es nunmal keinen Sinn, zwischen 0 und 1700 zu interpolieren.
Hier der komplette Code:
Code:
data = xlsread('deineDatei.xls');
A = data(:,1:2);
ex_Wirk_ges = data(:,4);
F = TriScatteredInterp(A(:,1),A(:,2),ex_Wirk_ges);
t1 = linspace(min(A(:,1)), max(A(:,1)));
t2 = linspace(min(A(:,2)), max(A(:,2)));
[qx,qy] = meshgrid(t1,t2);
qz = F(qx,qy);
mesh(qx,qy,qz);
hold on
plot3(A(:,1),A(:,2),ex_Wirk_ges,'o');
oft hilft es, die Grafik ein wenig zu rotieren.
Ansonsten müsstest du präzisieren, wie es besser aussehen sollte.
Grüße,
Harald
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.