如何在matlab中对散乱数据进行插值?

How to interpolate scattered data in matab?

我在 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);

但是,我收到以下错误:

Error using griddata (line 109)

The lengths of X and Y must match the size of Z.

在我看来,我在 3D (griddata(x,y,z,v,xq,yq,zq)) 中使用插值,而不是 2D (griddata(x,y,v,xq,yq)),但我不知道我做错了什么。

griddata的正确使用方法是什么?我的代码有什么问题?

我查看了 the examples,但是,我无法弄清楚它们与我的问题有什么关系。

根据您的问题,您的数据位于非均匀网格上;但是,griddata 期望函数的每个值 (f_val) 都有一个唯一的 xy 值。因此,您需要使用 ndgrid 来创建 xy 的这些独特组合。

[xx,yy] = ndgrid(x_val, y_val);
result = griddata(xx(:), yy(:), f_val(:), x, y)