0

有谁知道为什么我会从 Spline 函数与使用 Spline 方法的 Interp1 函数得到不同的结果?我试图查找其他人是否有此问题,但我唯一能找到的是函数期望输入以不同的顺序(即列与行)。我正在运行的代码是...

p1 = [20 40];    p2 = [200 500];    p3 = [400 300];    p4 = [600 500];
p = [p1; p2; p3; p4];

axis([0 1000 0 1000]); hold;
plot(p(:,1), p(:,2),'o')
x = linspace(0,1000,600);

%% 1
pp = spline(p(:,1),p(:,2));
yy = ppval(pp, x);
plot(yy,'r')

%% 2
y = interp1(p(:,1),p(:,2),x,'spline');
plot(x,y,'g')

如果您查看结果图,就会发现差异很大,我不确定为什么会这样。任何帮助,将不胜感激!

4

1 回答 1

0

您在绘制第一种方法时输入错误。

那应该是:

%% 1
pp = spline(p(:,1),p(:,2));
yy = ppval(pp, x);
plot(x,yy,'r') %notice the x!

%% 2
y = interp1(p(:,1),p(:,2),x,'spline');
plot(x,y,'g')

如果没有该x参数,绘图将在绘图的 x 轴上采用“x = 1:numel(yy)”,这会导致您之前的压缩绘图。

于 2011-08-17T19:19:08.127 回答