MATLABで多次元配列の値を効率よく補間する方法

interp2は遅いのでgriddedInterpolant()を使う。補間されるデータがNDGRIDで生成された格子を基にしているのか、MESHGRIDで生成され格子を基にしているかで使い方が違うので注意。

補間されるデータがNDGRIDで生成されている場合

[X1, X2] = ndgrid(1:10,1:10);
V = X1.^2 + X2.^1.5;
F = griddedInterpolant(X1,X2,V, 'cubic');
[Xq1, Xq2] = ndgrid(1:0.5:10,1:0.5:10);
Vq = F(Xq1,Xq2);
figure
mesh(Xq1,Xq2,Vq);

補間されるデータがMESHGRIDで生成されている場合

[Y1, Y2] = meshgrid(linspace(1,10,10),linspace(1,10,10));
Vy = Y1.^2 + Y2.^1.5;
F = griddedInterpolant(Y1',Y2',Vy', 'cubic');
[Yq1, Yq2] = meshgrid(linspace(1,10,20),linspace(1,10,20));
Vyq = F(Yq1',Yq2')';
figure
surf(Yq1,Yq2,Vyq);