如何在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
) 都有一个唯一的 x
和 y
值。因此,您需要使用 ndgrid
来创建 x
和 y
的这些独特组合。
[xx,yy] = ndgrid(x_val, y_val);
result = griddata(xx(:), yy(:), f_val(:), x, y)
我在 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
) 都有一个唯一的 x
和 y
值。因此,您需要使用 ndgrid
来创建 x
和 y
的这些独特组合。
[xx,yy] = ndgrid(x_val, y_val);
result = griddata(xx(:), yy(:), f_val(:), x, y)