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);