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
。