Die Schichtung mehrerer Bilder in 3D-Raum
Nehmen wir an, wir haben eine matrix, die ich von der Größe 49x49x5, entsprechend 5 Bilder der Größe 49x49 gestapelt entlang der Dritten dimension, so haben wir insgesamt 5 Bilder. Diese Bilder sollten die Visualisierung der Dichte eines Gases in einem 3D-Raum, so dass wir denken können jedes Bild als Schnitt des Raumes an verschiedenen stellen.
Gibt es eine Möglichkeit, um ein Bild in MATLAB, wo alle 5 Bilder werden gezeigt, wie hängen im 3D-Raum, den Sie "gekommen"?
Hier ist ein Bild, hoffentlich macht es klarer, was ich nach:
- Was verwenden Sie zum generieren von diesem Bild?
- Google Sketchup 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Betrachten Sie das folgende Beispiel. Es verwendet die low-level - OBERFLÄCHE Funktion plot gestackten Bildern:
Ich bin mit indizierten Farbbildern (mit direct color mapping), aber es kann leicht geändert werden, um zu verwenden, Graustufen-Bilder (mit skaliert color mapping).
Nun, wenn Sie wollen, Holen Sie sich die 3D-Raum angeordnet wie Sie in Ihrer Frage, einfach vertauschen der Y-und Z-Abmessungen (Bilder gestapelt entlang der Y-dimension statt der Z-dimension).
Im Allgemeinen, haben mehr Kontrolle über den Blickwinkel, nutzen Sie die Kamera manipulation Funktionen.
repeat
-ing das selbe Bild 5 mal und stapeln Sie auf der jeweils anderen. Sie können offensichtlich Lesen Sie verschiedene Bilder in der gleichen Weise, solange Sie alle die gleiche Größe. Auch ich war mit "indiziert" Bilder, aber Sie können es ändern, um entweder "Graustufen" (gestapelt in der 3. dim) oder "truecolor" - Bilder (gestapelt in der 4. dim). Hier ist ein Beispiel für RGB-Bilder: pastebin.com/T1shKdYFI = cat(4,img1,img2,img3)
. Auch in meinem Beispiel, ich bin nur mit der indexk
als die Z-Achsen-Koordinate. Wenn du also eine bestimmte "Höhe" für jedes Bild, verwenden Sie stattdessen (ich.e ersetzen Sie die'ZData',Z.*k
Teil mit der richtigen Höhe). Wenn Sie möchten, weiter zu helfen, wäre es besser, erstellen Sie eine neue Frage, ist es nicht zweckmäßig, post beantworten in den Kommentaren. Nur sicher sein, um alle notwendigen Informationen zusammen mit Ihren aktuellen code ein..Die Funktion, die Sie suchen, ist die
patch
Funktion. Beispiel:Gibt ein Dreieck (drei Punkte), und die Koordinaten der Eckpunkte sind
(1,2,1)
,(1,6,1)
, und(6,2,-1)
. Wenn Sie möchten, fügen Sie einen vierten Punkt zu jeder Vektor, es wäre ein Rechteck, mit der neuen vertex an der neuen x -, y -, z-Koordinate.Beantworten deine gepostete Frage direkt, können Sie zeichnen eine Reihe von Rechtecken für die einzelnen Variablen einfach durch die Verwendung eines mehrdimensionalen array für
x
,y
, undz
, wo jede Spalte wird ein anderes polygon. In der Praxis funktioniert das wie folgt:Macht:
Gibt es Optionen, die Sie verwenden können, um Farbe hinzufügen, um die Polygone, überprüfen Sie die docs.
Wenn ich Sie richtig verstehe, können Sie die slice() oder contourslice() Funktionen, dies zu tun.
Schauen Sie sich dieses Beispiel:
http://www.mathworks.com/help/matlab/visualize/techniques-for-visualizing-scalar-volume-data.html