MATLAB:用ppval评估分段多项式(pchip)

时间:2013-07-31 16:43:51

标签: matlab interpolation evaluation piecewise

我正在尝试在MATLAB中进行pchip插值。插值工作正常,但是当我使用ppval函数检查曲线(用于绘图)时,我收到一条错误消息,我无法弄清楚问题是什么。

我之前以这种方式使用了pchip函数:yi = pchip(x,y,xi),并且运行正常。但是,我现在只想要系数(pp.coefs)。问题是当我尝试使用ppval函数检查它们时它们似乎毫无意义。

这是一个例子:

x  = [1.4771 1.9031 2.3802 2.9031 3.3979];
y  = [6.1727 5.1242 3.4537 1.8528 0]; 
pp = pchip(x,y);
xs = linspace(x(1),x(end),200);
yy = ppval(pp.coefs,xs);

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

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

任何人都可以帮我弄清楚我做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

不要只将系数传递给ppval,而是传递pchip返回的整个结构。
这应该有效:

pp = pchip(x,y);
xs = linspace(x(1),x(end),200);
yy = ppval(pp,xs);