4D矩阵的Matlab插值
我想插值4D矩阵。 矩阵大小为400X200X400X200的复数。 我正在使用函数:interpn 为此,我必须使用以下方法设置新网格: ndgrid 但是ndgrid需要几个小时。 你能帮忙吗 谢谢 示例代码:4D矩阵的Matlab插值,matlab,interpolation,Matlab,Interpolation,我想插值4D矩阵。 矩阵大小为400X200X400X200的复数。 我正在使用函数:interpn 为此,我必须使用以下方法设置新网格: ndgrid 但是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
[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'
参数不属于此处。它被解释为one(1,长度('single'))
,从而产生更大的矩阵
您还可以生成一个GridDedInterplant
,这样可以节省内存:
F_interp = griddedInterpolant({ky_vec,kx_vec,kv_vec,ku_vec},F)
请发一张MWE。什么是
ky\u vec
,kx\u vec
,kv\u vec
,ku\u vec
,f
?等等?如果已经有了f
,为什么还要进行插值?f
不是一个函数吗?你真的需要澄清你的实际问题,这似乎没有任何意义。@kndelsepp可能f
需要更长的时间,插值被认为是更快的操作?不管怎么说,我们要计算数十亿个点,当然这需要很长时间。问题应该澄清。这就是解决方案,谢谢@用户1112136:如果你认为这个答案是你问题的解决方案,请点击旁边的灰色复选标记接受它。