4D矩阵的Matlab插值

Matlab Interpolation of 4D matrix

我想插值 4D 矩阵。 矩阵大小为 400X200X400X200 的复数。 我正在使用函数:interpn

为此,我必须使用以下方法设置我的新网格: nd 网格

但是 ndgrid 需要几个小时。 你能帮忙吗?

谢谢!

示例代码:

[Y X V U]=ndgrid (ky_vec,kx_vec,kv_vec,ku_vec);
F=f(Y,X,V,U);
[Yt Xt Vt Ut]=ndgrid (ky_vec,kx_vec,ky_vec,kx_vec,'single');
A=interpn(Y,X,V,U,F,0.9*Yt,0.9*Xt,(1-0.9)*Vt,(1-0.9)*Ut,'linear',0.0);

'single' 参数不属于那里。它被解释为 ones(1,length('single')),因此会产生更大的矩阵。

您也可以生成一个 griddedInterpolant,这样可以节省内存:

 F_interp = griddedInterpolant({ky_vec,kx_vec,kv_vec,ku_vec},F)