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

4 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

Walter Roberson on 18 Jan 2020
scatteredInterpolant()
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 = ;
yslice = ;
zslice = ;
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)

Philippe Corner on 18 Jan 2020
vq = F(xq, yq, zq); %i think this line would be like this.
thanks a lot Walter, this was very helpful!
Walter Roberson on 18 Jan 2020
Sorry, yes, I renamed variables as I posted and missed renaming that.