Verfasst am: 04.07.2011, 10:06
Titel: Meshgrid vertauscht die Dimensionen
Moin,
ich verstehe das nicht. Ich möchte 'ganz einfach' per interp3 ein paar Daten interpolieren.
Also erzeuge ich mir zunächst per Meshgrid die nötigen Matrizen für XI YI und ZI.
Wenn ich nun
das ist schon richtig so. Der size-Befehl gibt ja die Größe einer (2dim) Matrix in (Zeilen,Spalten) an. Die Anzahl der Zeilen entspricht aber der Länge des 2.Argumentes im meshgrid-Befehl, daher also die scheinbare Vertauschung. Wichtig ist, daß der entsprechende contour- oder surf-Plot richtig rauskommt, also mit x-Achse nach rechts und y-Achse nach oben, und das ist bei der Matlab-Definition gewährleistet.
Man sieht, dass auf der X-Achse 21 Punkte geplottet werden, auf der Y-Achse nur 11 ...
Titus
Herbert
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.07.2011, 10:31
Titel:
Verstehe ich das jetzt richtig: Nur weil die Plotbefehle die Achsen auch wieder vertauschen und damit das Endresultat wieder passt ist das schon so in Ordnung?
Das muss doch einen richtigen Grund haben bzw. vernünftig erklärbar sein oder nicht?
In meinem Fall möchte ich nach dem interpolieren mit interp3 z.B. an den Daten noch etwas ändern. Da interp3 mit meshgrid arbeitet sind immer alle Daten verdreht und ich muss alle Argumente vertauschen. Dass das ganze beim Plot dann wieder "richtig getauscht" wird tröstet mich da wenig...
Dann siehst du, dass für XNeu die x-Werte verwendet werden usw.
Irritierend sind vielleicht die Dimensionen der resultierenden Matrizen. Das liegt daran, dass man sich zu diesem Zweck die Koordinaten so vorstellt (die Punkte bitte ignorieren) :
^ y
|....^ z
|.../
|../
|./
+- - - - - - -> x
Die Matrizen haben also soviele Zeilen wie es y-Werte gab, Spalten wie es x-Werte gab und "Schichten/Blätter" wie es z-Werte gab.
Grüße,
Harald
Herbert
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 05.07.2011, 16:43
Titel: Ich verstehe es einfach nicht...
Also, jetzt mal mit meinen Daten, ich kriege das hier besprochene einfach nicht übertragen...
Ich habe meine QuellDaten (DIE vierte Dimension ignorieren wir hier mal..):
Jetzt kommt das interpolieren, und eigentlich sollte das mit dem oben erzeugten grid doch einfach so möglich sein oder nicht? ABER:
Code:
interpData = interp3(xOrig,yOrig,zOrig,data(:,:,:,1),XNeu,YNeu,ZNeu);
??? Error using ==> interp3 at 129
The lengths of X,Y and Z must match the size of V.
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.