Warum tauscht Achse X mit Y ein, wenn ein 3D-Skalarfeld mit Matlab gezeichnet wird?

457
sash

Wenn ich die Isofläche eines 3d-Skalarfeldes A(i,j,k)(i = 1 ~ 31, j = 1 ~ 151, k = 1 ~ 151) mit Matlab zeichne, entspricht in der Abbildung, dass j der x-Achse und i der y-Achse entspricht. Wie ordnet Matlab 3D-Daten an?

Hier ist die Figur, die ich gezeichnet habe:

Hier ist die Figur, die ich gezeichnet habe

Das kubische Netz ist 31x151x151. Aber in der Figur ist die Länge in der X-Richtung 151, die Länge in der Y-Richtung ist 31. Die Figur ist das Spiegelbild derjenigen, die ich will.

1
Kannst du einen Screenshot hinzufügen? Zusammen mit zusätzlichen Details zum erwarteten Ergebnis. Vielen Dank. Nathan.Eilisha Shiraini vor 5 Jahren 1
@ Nathan.EilishaShiraini Klar, ich habe die Frage geändert. Danke dir. sash vor 5 Jahren 0

1 Antwort auf die Frage

0
Nathan.Eilisha Shiraini

Laut den Matlab-Dokumenten für die meshFunktion scheint es, dass die Y-Achse den ersten Index der Matrix verwendet und nicht den zweiten. ZB in einem (i,j)Indexpaar, iwird es sich auf der Achse Y befinden und jauf der Achse X sein. Ich habe mit Kollegen eine ausführliche Diskussion darüber geführt, und es scheint die Art zu sein, in der Matlab seine Matrizen intern speichert: Es speichert eine Liste von Spalten ( Column-Major Order ) gibt es hier eine recht interessante Erklärung: http://fr.mathworks.com/help/matlab/matlab_external/matlab-data.html#f22019

TL; DR Die erste Dimension sind die Spalten (Y), dann die Zeilen (X) und dann alle weiteren Achsen der Reihe nach.

Vielen Dank für die Erklärung! Ich verstehe immer noch nicht, warum die geplottete Figur das Spiegelbild der Figur ist, die ich über die XZ-Ebene haben möchte. sash vor 5 Jahren 0
Ich scheine es zu verstehen. Wenn Matlab den zweiten Index als erste Dimension verwendet, muss das Bild in der mit dem i-Index von A (i, j, k) verknüpften Dimension umgekehrt werden, um sicherzustellen, dass das Koordinatensystem noch Rechtshänder ist. sash vor 5 Jahren 0