MATLAB:获取分段立方赫米特插值多项式的系数



我想将曲线适合某些数据。由于获得了最佳效果,我使用了Pchip插值。此外,我想用ppval-function获得6个间隔的系数。但是有这样的错误:

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

你能帮我吗?

最好的问候Dominik

pchip有两个工作模式:

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

    返回与ppval

    一起使用的分段多项式结构
  • 在指定点进行插值: p = pchip(x,y,xq)

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

    相同

    返回与查询相对应的插值值p的向量 xq中的点

所以,您使用的第二种模式不适合与ppval一起使用。

最新更新