当我运行 interp2 并使用 MESHGRID 定义了我的数组时,它不会产生错误,并且当使用 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)