如何在matab中插入分散的数据?

时间:2016-02-29 14:38:30

标签: arrays matlab runtime-error interpolation

我在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但是,我无法弄清楚它们与我的问题有什么关系。

1 个答案:

答案 0 :(得分:1)

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

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