Plot 3D cylindrical voxels filled or empty (boolean)
조회 수: 8 (최근 30일)
이전 댓글 표시
Hi,
I have a matrix called h of size 9x36x20 [r, theta, z], containing 1's and 0's. Each number represent a voxel in a cylindrical figure. I would like to be able to plot in a 3d figure those with a 1 with some filled color, while leaving those with a zero transparent (could be with borders though, to make them look like a grid).
I would like to obtain something like this (drawn in inkscape, the matlab figure would be the whole cylinder with some red voxels).

Is it possible? I have already plotted some horizontal slices using patch to show the data at different heights, but this way is more representative
채택된 답변
darova
2020년 5월 24일
I draw your data
clc,clear
cla
load example.mat
[m,n,k] = size(diff);
[r,t,z] = ndgrid(1:m,1:n,1:k);
[x,y] = pol2cart(t,r);
ix = logical(diff);
plot3(x(ix),y(ix),z(ix),'.r')
axis vis3d
Here is the result. It's hard to see anything. Can you explain more?

댓글 수: 6
darova
2020년 5월 25일
Easy way to add walls
t = (-15:15)*pi/180; % angle
t = [t(1) t t(end)];
[x1,y1] = pol2cart(t,1); % small arc
[x2,y2] = pol2cart(t,2); % large arc
x2([1 end]) = x1([1 end]);
y2([1 end]) = y1([1 end]);

추가 답변 (1개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






