Matlab: получение коэффициентов кусочно-кубического интерполяционного многочлена Эрмита

Я хочу подогнать кривую к некоторым данным. Я использовал интерполяцию PCHIP из-за получения наилучших результатов. Более того, я хочу получить коэффициенты для 6 интервалов с ppval-function. Но выскакивает такая ошибка:

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

Можете вы помочь мне?

С уважением Доминик


person cyc7    schedule 10.09.2017    source источник


Ответы (1)


pchip имеет два режима работы:

  • #P2# <блочная цитата> #P3#
  • #P4# <блочная цитата> #P5# #P6#

Итак, вы используете второй режим, который не подходит для использования с ppval.

person m7913d    schedule 11.09.2017