如何在纸上写出样条拟合给出的方程?

计算科学 matlab 八度
2021-12-06 15:48:29

我试图在纸上写出splinefit函数给出的分段多项式,但我在弄清楚系数应该是什么时遇到了一些问题。因此,脚本的输出为我提供了以下信息:

  scalar structure containing the fields:

form = pp
breaks =

 Columns 1 through 15:

  -1.00000  -0.93750  -0.87500  -0.81250  -0.75000  -0.68750  -0.62500  -0.56250  -0.50000   0.00000   0.50000   0.56250   0.62500   0.68750   0.75000

 Columns 16 through 19:

   0.81250   0.87500   0.93750   1.00000

coefs =

   2.5644e+03  -3.1686e+02   7.4332e+00  -1.0744e-01
  -2.5013e+02   1.6397e+02  -2.1226e+00  -2.5453e-01
  -2.4859e+03   1.1707e+02   1.5442e+01   1.9225e-01
   2.4278e+03  -3.4904e+02   9.4429e-01   1.0078e+00
   2.0742e+01   1.0618e+02  -1.4235e+01   2.9610e-01
  -9.0213e+02   1.1007e+02  -7.1939e-01  -1.7374e-01
   3.6900e+02  -5.9083e+01   2.4670e+00  -9.0075e-03
  -5.4428e+01   1.0105e+01  -5.9408e-01   4.4780e-03
   9.4209e-02  -1.0004e-01   3.1240e-02  -6.4667e-03
  -5.9852e-02   4.1271e-02   1.8542e-03  -4.0812e-03
  -5.3315e+01  -4.8507e-02  -1.7641e-03  -3.1792e-04
   3.5957e+02  -1.0045e+01  -6.3261e-01  -1.3634e-02
  -8.6341e+02   5.7374e+01   2.3254e+00  -4.6254e-03
  -4.0925e+01  -1.0452e+02  -6.2096e-01   1.5404e-01
   2.4543e+03  -1.1219e+02  -1.4165e+01  -3.0303e-01
  -2.4445e+03   3.4799e+02   5.7280e-01  -1.0274e+00
  -2.7185e+02  -1.1035e+02   1.5426e+01  -2.2903e-01
   2.2566e+03  -1.6132e+02  -1.5531e+00   2.3768e-01

pieces =  18
order =  4
dim =  1

如果我通过 ppval 绘制函数,我会得到我所期望的。但是,如果我采用系数矩阵的第一行,按照我的解释,我可以将第一个三次多项式写成:

f(x)=2.5644×103x33.1686×102x2+7.4332x1.0744×101, 1<x<0.9375

仅供参考,f(x=1)0在我拥有的数据中,但从刚刚显示的等式中可以清楚地看出情况并非如此。

1个回答

我找到了答案!Octave/MATLAB 的函数splinefit不同于polyfit前者的多项式被提议为:

n=0kan(xxo)n

而在后者

n=0kanxn

在哪里x0指范围[x0,xf]的横坐标。