2011-08-17 413 views
0

有沒有人知道爲什麼我會從Spline函數與使用Spline方法的Interp1函數中獲得不同的結果?我試圖查找別人是否有這個問題,但我唯一能找到的是函數期望輸入的順序不同(即列與行)。我正在運行的代碼是...使用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

您在繪製第一種方法時出現了打字錯誤。

這應該是:

%% 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:numel(YY)在您的情節,這會導致擠壓情節你不得不的x軸之前。

+0

哦,我的天哪,就是這樣!謝謝,這絕對是太長時間了。 – abroad

+0

沒問題,我們所有人在盯着一段代碼太久之後都會發生這種情況。 – Egon

相關問題