# how to obtain volume data from X,Y,Z,c data to use slice() function?

3 ビュー (過去 30 日間)
Philippe Corner 2020 年 1 月 18 日
コメント済み: Walter Roberson 2020 年 1 月 18 日
If we have X,Y,Z,v data, how can I manage to get Volume data form in order to use slice function?
first column: x coordinate
second column: y coordinate
third column: z coordinate
fourth column: data
##### 2 件のコメント表示非表示 1 件の古いコメント
Philippe Corner 2020 年 1 月 18 日
Yes, thank you walter.
Im not sure how to mesh this data to obtain the solid rectangle I need..
my code goes like this:
x = data(:,1);
y = data(:,2);
z = data(:,3);
c = data(:,4);
F = scatteredInterpolant(x,y,z,c);
[xq,yq,zq] = meshgrid(-10:1:20); %im not sure how to build it
vq = F(xq,yq,zq);
xslice = [0];
yslice = [0];
zslice = [0];
slice(xq,yq,zq,vq,xslice,yslice,zslice)
I'm suposed to obtain a solid rectangle among this scatter:
scatter3(x,y,z,4,'filled')
something like:
What I really want is to obtain a meshgrid and plot a 3d voxel that represents my initial data among:
limx = [(592447.8 592463.9)]
limy = [(507793.3 507837.4)]
limz = [(2553.6 2559.9)]
any suggestion walter?

サインインしてコメントする。

### 採用された回答

Walter Roberson 2020 年 1 月 18 日

N = 50;
xvec = linspace(592447.8, 592463.9, N);
yvec = linspace(507793.3, 507837.4, N);
zvec = linspace(2553.6, 2559.9, N);
[xq, yq, zq] = meshgrid(xvec, yvec, zvec);
x = data(:,1);
y = data(:,2);
z = data(:,3);
c = data(:,4);
F = scatteredInterpolant(x,y,z,c);
vq = F(X, Y, Z);
xslice = something in the x range;
yslice = something in the y range;
zslice = something in the z range;
slice(xq, yq, zq, vq, xslice, yslice, zslice)
##### 2 件のコメント表示非表示 1 件の古いコメント
Walter Roberson 2020 年 1 月 18 日
Sorry, yes, I renamed variables as I posted and missed renaming that.

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!

Translated by