我想使用matlab命令“ interp3”对不规则的3D网格进行插值, 具有X,Y,Z的坐标以及每个点的值。 x,y,z的尺寸为76 * 36 * 16,并且存储在向量x,y和z中的采样位置正在增加。
x
y
z
the values at each point
我用来对网格进行插值的命令如下:
[x_out,y_out,z_out]=meshgrid(-310:5:310,-165:5:205,-70:5:5);
vel_grid=interp3(x_3d,y_3d,z_3d,vel,x_out,y_out,z_out);
和错误消息: 您输入的网格无效的Meshgrid。
我无法确定输入网格的错误之处,存储在向量x,y和z中的采样位置正在增加。我的输入网格仍应满足什么条件?
答案 0 :(得分:0)
由于3D网格是不规则的,因此您不能使用interp3
,它假定您的初始数据按正确的网格顺序排列。
例如
x = rand(76,36,16);
y = rand(76,36,16);
z = rand(76,36,16);
v = rand(76,36,16);
slice(x,y,z,v,0,0,0);
将导致
Error using interp3 (line 147)
Input grid is not a valid MESHGRID.
Error in slice (line 104)
vi = interp3(x,y,z,v,xi,yi,zi,method);
但是您可以这样使用scatteredInterpolant
F =scatteredInterpolant(x_3d(:),y_3d(:),z_3d(:),vel(:));
[x_out,y_out,z_out]=meshgrid(-310:5:310,-165:5:205,-70:5:5);
v_out = F(x_out,y_out,z_out);
xslice = [0];
yslice = [0];
zslice = [,0];
slice(x_out,y_out,z_out,vel(:),xslice,yslice,zslice)