Чем функция Spline отличается от функции Interp1 при использовании метода Spline? - PullRequest
0 голосов
/ 17 августа 2011

Кто-нибудь знает, почему я получаю разные результаты от функции Spline и функции Interp1, используя метод Spline? Я попытался посмотреть, есть ли у других проблема с этой проблемой, но единственное, что я могу найти, - это то, что функции ожидают входные данные в разных порядках (то есть столбец или строка). Код, который я запускаю, это ...

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')

Если вы посмотрите на получающиеся графики, есть большая разница, и я не уверен, почему это так. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 17 августа 2011

Вы допустили опечатку при построении первого метода.

Это должно быть:

%% 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 = 1: цифра(yy) 'на оси x вашего графика, который вызывает сжатый график, который вы имели до этого.

...