Polyfitn polyfit的延伸,允许用户创建模型与多个自变量。它还允许用户指定一个通用模型,例如,一个二次模型,常数和二次项,但不包含线性项。
例如,适合一个多项式模型从一个余弦曲线点选择,我们甚至将只需要命令。
x = 2: .1:2;
y = cos (x);
p = polyfitn (x, y,持续x ^ 2 x ^ 4 x ^ 6 ');
p.Coefficients
ans =
(0.99996 - -0.49968 0.041242 - -0.0012079)
系数当然不会准确,我只用一个有限数目的本质上是截断泰勒级数,和我只有有限的点建立的模型。的前4一个余弦级数的系数:
> > [1 1/2 1/24 -1/720]
ans =
1 -0.5 0.041667 -0.0013889
所以我们得到了预期的结果。
当然,polyfitn工作在更高的维度,是真的为了解决这个问题。
x =兰德(100 1);
y =兰德(100 1);
z = exp (x + y) + randn (100 1) / 100;
p = polyfitn (x, y, z, 3);
结果可以被转换成一个象征性的形式查看模型更简单。我将使用sympoly工具箱,但还有一个polyn2sym函数提供。
polyn2sympoly (p)
ans =
0.43896 * X1 ^ 3 + 1.4919 * X1 ^ 2 * X2 + 0.041084 * X1 ^ 2 + 1.4615 * X1 * X2 ^ 2 - 0.095977 * X1 * X2 + 1.2799 * X1 + 0.56912 * X2 ^ 3 - 0.15306 * X2 ^ 2 + 1.361 * X2 + 0.94819
当然,参数估计误差为那些希望确定生成的意义生成的条件。
我还提供了工具来评估这些模型,并区分模型。
一个警告——小心使用高阶多项式适合您的数据。仅仅因为一个低阶模型作品,高阶模型并不一定更好。高阶多项式数据点之间的经常患有严重的振铃。你的数据总是阴谋。想想您将构建的模型。然后情节产生的模型。用你的眼睛来验证结果,比简单地看着平方系数(尽管我也做返回参数。)
如果你发现一个高阶多项式模式是必要的,因为你的曲线是太复杂,考虑使用回归或平滑样条模型代替。
引用作为
约翰D 'Errico (2022)。polyfitn(//www.tianjin-qmedu.com/matlabcentral/fileexchange/34765-polyfitn), MATLAB中央文件交换。检索。