Matlab:获取分段立方Hermite插值多项式的系数

问题描述:

我想对某些数据拟合曲线。我使用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'); 

你能帮助我吗?

问候 多米尼克

pchip有两种工作模式:

  • 计算分段多项式系数:pp = pchip(x,y)

    返回使用分段多项式结构ppval

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

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

    返回内插值P的XQ

对应于该查询 点的矢量因此,您正在使用第二种模式,该模式不适用于ppval