matlab错误:输入网格是无效的Meshgrid

时间:2018-09-20 06:53:01

标签: matlab

我想使用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中的采样位置正在增加。我的输入网格仍应满足什么条件?

1 个答案:

答案 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)