当我运行interp2并使用MESHGRID定义我的数组时,它不会产生错误,当使用NDGRID定义时会产生错误。但是,这没有任何意义,因为错误(如下所示)声称需要NDGRID格式。请随意为自己尝试,代码如下。这种不一致的原因是什么?如果有办法检测格式,为什么interp2只处理两种格式?我正在运行Matlab 2012b。
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)
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)
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)
答案 0 :(得分:3)
由于interp2
在内部使用griddedInterpolant
,因此需要在meshgrid
调用之前调换griddedInterpolant
格式输入(显示在帮助中)。 meshgrid
griddedInterpolant
显然没有验证输入数组。
由于大多数工具箱函数(包括interp2
)本身都是Matlab函数,因此只需键入edit interp2
或在调试时单步执行函数,就可以很容易地看到正在发生的事情。