MATLAB: Besoin de faire un 4D de la parcelle (3D + Couleur/Couleur)
J'ai besoin de faire une surface 3D où les couleurs représentent la quatrième variable. Je sais que "surf" est SIMILAIRE à ce dont j'ai besoin, mais ce n'est pas tout à fait. En gros, j'ai les variables suivantes:
t = [1:m]
y = [1:n]
a = [1:o]
Ceux-ci devraient être les trois Cartésien de coordonnées d'axes.
J'ai aussi une variable S qui est de dimensions m x n x o, et il est essentiel de l'amplitude, une fonction de trois variables (c'est à dire S = f(t,y,a)). Je veux que ce soit représenté par la couleur.
Donc, pour résumer, j'ai besoin d'un graphique de la forme (t,y,a,S), où les trois premières variables sont des vecteurs de tailles inégales et de la dernière variable est un tableau multidimensionnel dont les dimensions sont déterminées par les trois premiers.
Merci d'avance.
OriginalL'auteur Mike | 2012-03-31
Vous devez vous connecter pour publier un commentaire.
SCATTER3 nécessite
x
,y
etz
et autres regroupement des arguments de même taille Nx1 vecteurs pour une seule série ou NxM matrices M de la série.Vous avez plein d'espace de données en 3D. Pour faire de même taille coordonnées des vecteurs d'utiliser MESHGRID (ou NDGRID) fonction:
Ensuite, vous pouvez utiliser SCATTER3:
Le problème est car il est plein de l'espace de données scatter3 ne sera pas utile surtout si vous avez beaucoup de points.
Vous pouvez probablement le filtre de votre variable S (quelque chose comme
idx = S > 0
), alors vous pouvez tracer les données filtrées.Si vous avez vraiment besoin de visualiser toutes les données, regardez Volume de visualisation dans MATLAB de la documentation. Je peux recommander TRANCHE fonction, par exemple.
MODIFIER
Voici un exemple de 3D de l'espace nuage de points pour les petits vecteurs (
m
,n
,o
égal à 5) avecS = rand([m,n,o]); scatter3( X(:), Y(:), Z(:), [], S(:), 'filled' )
EDIT 2
De vos commentaires à l'autre réponse, j'ai trouvé que vous avez 32x76050x4 de la matrice. Vous pouvez réellement tracé 2D tranche à la fois. vous pouvez le faire en 2D avec IMAGESC fonction, ou en 3D, avec une TRANCHE de fonction.
Essayer:
où
k
est un nombre de 1 à 4 pour la 3ème dimension.Ou essayer
Pouvez-vous poster une capture d'écran de ce à quoi ça ressemble, si possible? Je suis curieux de savoir. Merci!
Capture d'écran de ce à quoi? nuage de points? Rappelez-vous qu'il est plein d'espace, de sorte qu'il ne fera pas beaucoup de sens, sauf si vous filtrer les données. Je peux vous le montrer pour les petits vecteurs.
J'ai toujours été un grand fan de surface résultat pour 4-D de visualisation. Un peu de transparence des isosurfaces peut faire une très jolie parcelle de terrain. 😉
Oui, ça pourrait être cool. Je ne savais pas. Le problème dans ce cas est de seulement 4 niveaux, dans la 3ème dimension.
OriginalL'auteur yuk
Peut-être cette créées par l'utilisateur tracé de routine peut vous aider.
Dessous à partir de la page du lien:
OriginalL'auteur AllanLRH
J'ai toujours utilisé des scatter3 pour la coloration/dimensionnement des pixels dans l'espace 3d. Je crois que la signature est:
La taille et la couleur peuvent être scalaire ou un vecteur de longueur égale à la coordonne. J'ai l'habitude d'utiliser soit la couleur ou la taille, le quatrième attribut, selon ce que j'ai fais preuve. Je n'ai pas de Matlab sur cette machine, donc pardonnez-moi si ma mémoire n'est pas complètement exacte sur l'utilisation. "aide scatter3" doit décrire au mieux.
J'ai un set de domaine temporel de signaux qui sont séparées dans l'espace, et j'ai pris la continue en ondelettes d'entre eux pour obtenir un scalogram. Donc, j'ai trois variables comme les axes de travail: temps (t), l'espace (x), et les échelles/fréquence (a), ainsi que les scalogram lui-même-ou plutôt, un ensemble de scalograms pour chacun des différents signaux spatialement séparés. le temps est d'une longueur 76050 échelles de longueur 32 de l'espace est de longueur 4 Ainsi, l'ensemble de scalograms est un tableau multidimensionnel de la longueur 32x76050x4, avec les valeurs réelles à l'intérieur de représentant de l'amplitude. C'est assez déroutant.
Je viens de penser à une idée. Que faire si j'ai escaladé les variables de manière appropriée de sorte que leurs tailles peuvent s'insérer dans une fonction comme le surf ou scatter3D? Donc, actuellement, les variables sont comme 32x76050x4. À l'aide de linspace ou quelque chose le long de ces lignes, je devrais être capable de faire thse gars line-up. Permettez-moi de donner à ceci un essai.
Vous devez ajouter cette nouvelle information à la question.
OriginalL'auteur rutgersmike