使用interp2进行2D插值

时间:2015-12-18 04:39:51

标签: matlab interpolation

我想描述具有interp2功能的平面的表面平整度。

空间采样点如下。

width=[0 500];
length=[0 100 200 300 400 500 600 700 800 900 1000];

和平坦度如下,宽度分别为0和500.

 a = [1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1]; % flatness at width 0
 b = [-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1]; % flatness at width 500

使用这些值,表面形状如下图所示。

enter image description here

我想用interp2函数将此图更改为下图。

enter image description here

以下是我的代码。

widthq=[0 100 200 300 400 500];

flatness=[a' b'];

flatnessq=interp2(width,length,flatness,widthq,length);

但是,不处理一个错误,'输入数据的大小不一致。'

任何人都可以解释这个错误,并提供一种如何用interp2函数插入我的数据的方法吗?

1 个答案:

答案 0 :(得分:1)

前三个输入需要全部具有相同的大小

[W, L] = meshgrid(width, length);

最后两个参数也需要具有相同的大小

[Wq, Lq] = meshgrid(widthq, length);

然后它应该工作

flatnessq=interp2(W,L,flatness,Wq,Lq);