舉壹個例子,對0~10這11個整數上的sin函數值插值,並將系數放到coefs裏,最後的圖如上
x?=?0:10;?y?=?sin(x);?
pp=interp1(x,y,'pchip','pp');%?pp返回壹個結構體,裏面儲存了各種插值信息
coefs=pp.coefs;?%?coefs這就是各段的插值多項式系數,
%?第壹列是三次項系數,第二列是二次項。。。
%?但要註意用這個系數計算時,它是以每壹小段的開頭那個數是0來計算的,
%?比如對於3~4這壹段,插值的值yi=a4*(xi-3)^3+a3*(xi-3)^2+a2*(xi-3)+a1
%?自己利用系數是很麻煩的,可以直接利用MATLAB自帶函數利用pp的結果
%?如果想要直接利用結構體pp去計算0~10範圍內任壹點的插值結果,
%?用ppval可以直接使用pp的中的系數,舉個例子
xi?=?0:.25:10;?
yi=ppval(pp,xi);
figure,plot(x,y,'o',xi,yi)
補充
'nearest'最近項插值
'linear'分段線性插值
'spline'三次樣條線插值(spline會比pchip更光滑壹點,同時也會多壹點震蕩)
'pchip'分段三次埃米爾特插值(不清楚他這裏的導數是怎麽默認的,好像是兩臨近點間的斜率)
'cubic'和pchip壹樣