沿一个维度插入非单调采样的N-D阵列

时间:2013-12-02 12:55:07

标签: arrays matlab multidimensional-array interpolation resampling

我有一个3D体积(80x80x3点)的测量值([646 2]值和时间点)。此数据未排序,采样时间点之间的时间不等距。我想重新采样/插值以获得更少的时间点(例如[0:0.1:1]间距)。所有数据一起变成[80 80 3 646 2]数组,其中[:::: 2]是时间,我想插入到。

我的第一次尝试是使用interp1,但下面的回答已经对我有了进一步的帮助,现在我不确定的问题是如何在与测量值共享其维度的时候插入时间?我的意思是[:::: 1]是值,[:::: 2]是时间点。

1 个答案:

答案 0 :(得分:2)

 % suppose your original matrix ranges from 1:80,1:80,1:3,1:646
 [x,y,z,t] = ndgrid(1:1:80,1:1:80,1:1:3,1:646);   

 % and you want to interpolate in finer constructed grids with interval of 0.1
 [xi,yi,zi,ti] = ndgrid(1:0.1:80,1:0.1:80,1:0.1:3,1:0.1:646);

 % v is your original matrix measurement matrix, vi is the interpolation
 vi = interpn(x,y,z,t,v,xi,yi,zi,ti,'spline');