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

5 views (last 30 days)
Philippe Corner on 18 Jan 2020
Commented: Walter Roberson on 18 Jan 2020
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 CommentsShowHide 1 older comment
Philippe Corner on 18 Jan 2020
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 on 18 Jan 2020
Edited: Walter Roberson on 18 Jan 2020
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 CommentsShowHide 1 older comment
Walter Roberson on 18 Jan 2020
Sorry, yes, I renamed variables as I posted and missed renaming that.