how to plot by scatter3 a 3D matrix with its elements being logic variables?

7 visualizaciones (últimos 30 días)
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

Respuesta aceptada

jonas
jonas el 12 de Sept. de 2018
Editada: jonas el 12 de Sept. de 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 comentarios
Valeriy
Valeriy el 18 de Nov. de 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
jonas el 18 de Nov. de 2018
You probably have to specify that already when plotting, i.e.:
scatter(..., 'markeredgealpha',0.05)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by