how to plot by scatter3 a 3D matrix with its elements being logic variables?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I made a 3D matrix representing a ellipsoid. The elements are logic variables, 1 or NaN. I thought this 3D matrix as Cartesian coordinate and the points on it. I want to plot this by using scatter3. But scatter3 accepts 1D vectors as inputs for position. (Before, I made a 2D matrix representing a ellipsoid and plotted this by using imagesc. This function accepts 2D matrix and don't require position vectors.)
Here is the code.
%making a coordinate
Sx=1; Sy=1; Sz=1; Nx=50; Ny=50; Nz=50; dx= Sx/Nx; dy=Sy/Ny; dz=Sz/Nz;
xa=[0:Nx-1]*dx;
ya=[0:Ny-1]*dy;
za=[0:Nz-1]*dz;
xa=xa-mean(xa);
ya=ya-mean(ya);
za=za-mean(za);
[X,Y,Z]=meshgrid(xa,ya,za);
%ellipsoid
rx=0.5;
ry=0.35;
rz=0.2;
A=zeros(length(xa),length(ya),length(za));
A(((X/rx).^2+(Y/ry).^2+(Z/rz).^2)<=1)=1;
A(((X/rx).^2+(Y/ry).^2+(Z/rz).^2)>1)=NaN;
Now I don't know how to transform the matrix for scatter3
0 commentaires
Réponse acceptée
jonas
le 12 Sep 2018
Modifié(e) : jonas
le 12 Sep 2018
You can use your logic data in A to set the color and your X, Y and Z data for coordinates.
scatter3(X(:),Y(:),Z(:),[],A(:))
7 commentaires
Valeriy
le 18 Nov 2018
I try tor reproduce command set(h1,'markeredgealpha',0.05),
but I have obtained message:
Error using specgraph.scattergroup/set
The name 'markeredgealpha' is not an accessible property for an instance
of class 'scattergroup'.
Help for scattergroup properties don't show presence of "markeredgealpha". How it works?
jonas
le 18 Nov 2018
You probably have to specify that already when plotting, i.e.:
scatter(..., 'markeredgealpha',0.05)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!