我在Matlab中有二维数据。 X值和Y值不均匀分布,因此我无法使用interp2
函数。
据我了解,我应该使用griddata
函数。我是这样做的:
%//x_val - my x values, of size, lets say, 32 by 1;
%//y_val - my y values, of size, let's say, 128 by 1;
%//f_val - values of my function, of size 32 by 128.
%//[x,y] - the point in which I want to get the interpolated value of my function.
result = griddata(x_val,y_val,f_val,x,y);
但是,我收到以下错误:
使用griddata时出错(第109行)
X和Y的长度必须与Z的大小相匹配。
在我看来,我在3D中使用插值(griddata(x,y,z,v,xq,yq,zq)
),而不是2D(griddata(x,y,v,xq,yq)
),但我不知道我做错了什么。
使用 griddata 的正确方法是什么?我的代码出了什么问题?
我查看了the examples但是,我无法弄清楚它们与我的问题有什么关系。
答案 0 :(得分:1)
根据您的问题,您有非均匀网格的数据;但是,griddata
期望函数的每个值(x
)都具有唯一的y
和f_val
值。因此,您需要使用ndgrid
来创建x
和y
的这些独特组合。
[xx,yy] = ndgrid(x_val, y_val);
result = griddata(xx(:), yy(:), f_val(:), x, y)