MESHGRID で配列を定義して interp2 を実行するとエラーは発生せず、NDGRID で定義するとエラーが発生します。ただし、エラー (以下に示す) は NDGRID 形式が必要であると主張しているため、意味がありません。自分で試してみてください。コードは以下にあります。この矛盾の理由は何ですか?フォーマットを検出する方法がある場合、なぜ interp2 は両方のフォーマットを処理しないのでしょうか? 私はMatlab 2012bを実行しています。
エラーは次のとおりです(テスト2によってトリガーされます):
Error using griddedInterpolant
Data is in MESHGRID format, NDGRID format is required.
Convert your data as follows:
X = X'; Y = Y'; V = V'; F = griddedInterpolant(X,Y,V)
テスト 1 - エラーなし
clear
x = linspace(0,2*pi,10);
y = linspace(0,2*pi,10);
[X1,Y1] = meshgrid(x,y);
x = linspace(0,2*pi,4);
y = linspace(0,2*pi,4);
[X2,Y2] = meshgrid(x,y);
u = sin(X1).*cos(Y1);
a = interp2(X1,Y1,u,X2,Y2)
テスト 2 - エラーがトリガーされる
clear
x = linspace(0,2*pi,10);
y = linspace(0,2*pi,10);
[X1,Y1] = ndgrid(x,y);
x = linspace(0,2*pi,4);
y = linspace(0,2*pi,4);
[X2,Y2] = ndgrid(x,y);
u = sin(X1).*cos(Y1);
a = interp2(X1,Y1,u,X2,Y2)