2

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

1 に答える 1