有人知道为什么我会使用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')
如果你看一下结果图,会有很大的不同,我不确定为什么会这样。任何帮助将不胜感激!
答案 0 :(得分: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)”,这会导致之前的压缩绘图。