polyfitn

版本1.3 (56.7 KB)的 约翰D 'Errico
1维或n维多项式建模

31.4 k下载

更新2016年4月27日

查看许可协议

Polyfitn是polyfit的扩展,允许用户创建具有多个自变量的模型。它还允许用户指定一个通用模型,例如,一个二次模型,具有常数项和二次项,但没有线性项。
例如,要拟合从余弦曲线中选取的点的多项式模型,我们只需要偶序项。
x = 2: .1:2;
y = cos (x);
P = polyfitn(x,y,'constant 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 ^2 + 1.2799* x1 + 0.56912* x2 ^3 - 0.15306* x2 ^2 + 1.361* x2 + 0.94819

当然,参数误差估计是为那些想要确定所产生的项的意义的人而产生的。

我还提供了评估这些模型和区分模型的工具。

一个警告-小心使用高阶多项式来拟合你的数据。仅仅因为低阶模型有效,高阶模型不一定更好。高阶多项式在数据点之间经常有严重的振铃现象。总是要绘制数据图。想想你要建立的模型。然后绘制得到的模型。用你的眼睛来验证结果,而不仅仅是看一个r平方系数(尽管我也会返回这个参数)。

如果你确实发现高阶多项式模式是必要的,因为你的曲线实在是太复杂,考虑使用回归或平滑样条模型代替。

引用作为

约翰D 'Errico(2022)。polyfitn(//www.ru-cchi.com/matlabcentral/fileexchange/34765-polyfitn), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2007b
与任何版本兼容
平台的兼容性
窗户 macOS Linux

世界杯预选赛小组名单社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!世界杯预选赛小组名单

开始狩猎!

PolyfitnTools /演示/ html /

Baidu
map