2017-09-10 69 views
0

我想對某些數據擬合曲線。我使用PCHIP插值是爲了獲得最佳結果。此外,我想用ppval-function得到6個區間的係數。但有彈出這樣的錯誤:Matlab:獲取分段立方Hermite插值多項式的係數

Error using unmkpp (line 18) 
The input array does not seem to describe a pp function. 

Error in ppval (line 62) 
[b,c,l,k,dd]=unmkpp(pp); 

Error in SA (line 8) 
v = ppval(p,xdata) 

這是我的代碼:

clear all 
xdata = [0; 3.5; 6.8; 7.6; 8.2; 30; 34.2]; 
ydata = [0; 50; 400000; 2000000; 25000000; 100000000;100000000] 
xq1 = 0:0.01:35; 

p = pchip(xdata,ydata, xq1); 
s = spline(xdata,ydata,xq1); 
v = ppval(p,xdata) 
plot(xdata,ydata,'o',xq1,p,'-',xq1,s,'-.'); 
legend('Datenpunkte','pchip','spline','Location','SouthEast'); 

你能幫助我嗎?

問候 多米尼克

回答

1

pchip有兩種工作模式:

  • 計算分段多項式係數:pp = pchip(x,y)

    返回使用分段多項式結構ppval

  • 在指定點的插值:p = pchip(x,y,xq)

    相同p = ppval(pchip(x,y),xq)

    返回內插值P的XQ

對應於該查詢 點的矢量因此,您正在使用第二種模式,該模式不適用於ppval