2

当我运行 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)
4

1 回答 1

3

因为interp2,在griddedInterpolant内部使用时,需要在调用meshgrid之前转置的格式输入(显示在帮助中) 。不验证输入数组,而显然是这样。griddedInterpolantmeshgridgriddedInterpolant

由于大多数工具箱函数,包括interp2Matlab 函数本身,因此很容易通过edit interp2在调试时键入或进入函数内部来查看正在发生的事情。

于 2013-05-28T20:03:20.410 回答