使用Matlab interp3而不先调用meshgrid

时间:2017-05-15 19:44:23

标签: matlab

我有一个MATLAB 3D矩阵,我想在第三维插值。我使用MATLAB interp3来做到这一点:

final_3D_mat=interp3( hor_inds_mm, vert_inds_mm, prev_depth_axis_mm,...
                      prev_3D_mat, ...
                      hor_inds_mm, vert_inds_mm, new_depth_axis_mm ) 

使用的数组大小:

size(prev_3D_mat)
size(hor_inds_mm)
size(vert_inds_mm)
size(prev_depth_axis_mm)
size(new_depth_axis_mm)

ans =
   337   507    17
ans =
     1   507
ans =
     1   337
ans =
     1    17
ans =
     1   337

我不想在调用interp3之前调用meshgrid,并使用interp3的X,Y,Z参数作为向量。但是我一直收到错误:

??? Error using ==> interp3 at 128
XI,YI, and ZI must be the same size or vectors of different
orientations.

我试图交换hor_inds_mm和vert_inds_mm参数的位置,但得到了错误:

??? Error using ==> interp3 at 128
The lengths of X,Y and Z must match the size of V.  

我也试图像这样改变矢量的方向:

final_3D_mat=interp3( hor_inds_mm, vert_inds_mm', permute(prev_depth_axis_mm,[1 3 2]),...
                      prev_3D_mat, ...
                      hor_inds_mm, vert_inds_mm',permute(new_depth_axis_mm,[1 3 2]));

但我得到了同样的错误:

??? Error using ==> interp3 at 128
XI,YI, and ZI must be the same size or vectors of different
orientations.

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

你接近成功,只需要让前两个指数的方向不同:

final_3D_mat=interp3( hor_inds_mm', vert_inds_mm, prev_depth_axis_mm,...
                      prev_3D_mat, ...
                      hor_inds_mm', vert_inds_mm, new_depth_axis_mm ) ;