MATLAB: Brauchen Sie, um eine 4D-plot (3D + Farbe/Color)
Ich brauche, um eine 3D-Oberfläche, wo die Farbe repräsentiert die vierte variable. Ich weiß, "surfen" ist ÄHNLICH zu dem, was ich brauche, aber das stimmt so nicht ganz es. Im Grunde genommen habe ich die folgenden Variablen:
t = [1:m]
y = [1:n]
a = [1:a]
Diese sollten die drei kartesischen corodinate Achsen.
Ich habe auch eine variable S, die Dimensionen m x n x o, und ist im Grunde die amplitude eine Funktion der vorangegangenen drei Variablen (d.h. S = f(t,y,a)). Ich will, dass dieses vertreten durch Farbe.
Also um zusammenzufassen, ich brauche ein Diagramm der form (t,y,a,S), wobei die ersten drei Variablen sind Vektoren ungleicher Größen und die Letzte variable ist ein mehrdimensionales array, dessen Abmessungen bestimmt werden, indem die ersten drei.
Vielen Dank im Voraus.
- was hast du am Ende dabei? igitt, die Ihr problem lösen? Vergessen Sie nicht, wählen Sie eine Antwort aus 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
SCATTER3 erfordert
x
,y
undz
und der andere die Gruppierung der Argumente gleich große Nx1 Vektoren für eine einzelne Reihe oder NxM-Matrizen für M-Serie.Haben Sie die volle Raum 3D-Daten. Um gleich große Koordinaten-Vektoren verwenden MESHGRID (oder NDGRID) Funktion:
Dann können Sie mit SCATTER3:
Das problem ist, da es voll-space-Daten scatter3 wird nicht hilfreich sein, speziell, wenn Sie haben eine Menge von Punkten.
Können Sie wahrscheinlich filtern Sie Ihre variable S (so etwas wie
idx = S > 0
), dann Plotten kann gefilterten Daten.Wenn Sie wirklich brauchen, zu visualisieren all die Daten, Blick auf Volumen Visualisierung in der MATLAB-Dokumentation. Kann ich nur empfehlen, SCHEIBE Funktion, zum Beispiel.
BEARBEITEN
Hier ist ein Beispiel einer vollständigen 3D-Raum scatter-plot für kleine Vektoren (
m
,n
,o
gleich 5) mitS = rand([m,n,o]); scatter3( X(:), Y(:), Z(:), [], S(:), 'filled' )
EDIT 2
Aus Ihren Kommentaren zu den anderen Antworten fand ich, dass Sie 32x76050x4 matrix. Kann man eigentlich plot der 2D-Scheibe ein zu einer Zeit. Sie können es in 2D mit der Funktion IMAGESC, oder in 3D mit der SLICE-Funktion.
Versuchen:
wo
k
ist eine Zahl von 1 bis 4 für die 3. dimension.Oder versuchen
Vielleicht dieser Benutzer erstellt, Plotten routine helfen können.
Screnshot von der verlinkten Seite:
Habe ich immer verwendet scatter3 zum färben/sizing Pixel im 3d-Raum. Ich glaube, die Signatur ist:
Die Größe und die Farbe können Skalar sein oder ein Vektor der Länge gleich zu den Koordinaten. Ich in der Regel verwenden Sie entweder die Farbe oder die Größe zu reflektieren, das vierte Attribut, je nach dem, was ich zeige. Ich habe keine Matlab auf diese Maschine, so verzeihen Sie mir, wenn meine Erinnerung nicht ganz genau auf die Nutzung. "helfen scatter3" beschreiben sollte es viel besser.