Plot 3D binary matrix as surface (or how to get 3D matrix coordinates)
Mostrar comentarios más antiguos
Hi! I got a binary 650x512x128 matrix (Let's say it's called A) that represents 128 images of a curve segmentation of size 650x512 that I want to plot as a continuous surface.
I tried using isosurface, but it seems like a scattered points that doesn't make contact between each other, so that ain't look like a surface.
I tried also to get coordinates of all points and then plot using plot3 and it works, but points are not conected, here is my code:
[x,y,z] = ndgrid(1:size(A, 1), 1:size(A, 2), 1:size(A, 3)); %get coordinates of all points
xx = x(A == 1); %keep only coordinates for A == 1
yy = y(A == 1); %these 3 lines also reshape the 3d array
zz = z(A == 1); %into column vectors
plot3(xx, yy, zz, '-');

Thanks in advance to everyone.
EDIT: I've attached the test.mat file that includes the 3D matrix.
6 comentarios
Sargondjani
el 30 de Jun. de 2020
try function 'surf'. You seems to plot each column seperatly, with surf you can plot one surface.
Oscar Ramos Soto
el 30 de Jun. de 2020
Sargondjani
el 30 de Jun. de 2020
Ok, i get it now. One solution (which might not be very efficient) would be to use interpolation of the zz values, using scattered interpolation.
something like the example "seamount" here:
Sargondjani
el 1 de Jul. de 2020
Actually xx, yy and zz are not column vectors, but arrays of the same size as A.
Following code will at least get you closer. I thought about getting you further, but this is all i got so far:
[x,y,z] = ndgrid(1:size(V, 1), 1:size(V, 2), 1:size(V, 3)); %get coordinates of all points
xx = reshape(x(V == 1),[],1); %keep only coordinates for V == 1
yy = reshape(y(V == 1),[],1); %these 3 lines also reshape the 3d array
zz = reshape(z(V == 1),[],1); %into column vectors
figure
plot3(xx,yy,zz,'.','markersize',1)
KSSV
el 1 de Jul. de 2020
Are you looking for slice?
Oscar Ramos Soto
el 1 de Jul. de 2020
Respuestas (0)
Categorías
Más información sobre Surface and Mesh Plots en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!