图片缩略图

polyfitn

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

29日k下载

更新2016年4月27日

查看许可协议

Polyfitn是polyfit的延伸,从而允许用户与多于一个的独立变量创建模型。它也允许用户指定的一般模型,例如,二次模型,具有恒定和二次项,但是没有线性项。
例如,为了拟合一个多项式模型到余弦曲线上选择的点,我们只需要偶数有序项。
x = 2: .1:2;
y = cos (x);
P = polyfitn(X,Y, '恒定的x ^ 2×^ 4×^ 6');
p.Coefficients
ans =
[0.99996 -0.49968 0.041242 -0.0012079]
系数当然不会是精确的,因为我只使用了有限数量的项对于本质上是一个截短的泰勒级数,我只有有限数量的点来建立模型。cos级数的前4个系数应该是
>> [1 -1/2 1/24 -1/720]
ans =
1 -0.5 0.041667 -0.0013889

所以我们得到了预期的结果。

当然,聚苯乙烯可以在更高的维度下工作,因为这是它真正设计来解决的问题。

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 =
* x1 ^2 + 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

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

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

一个警告-小心使用高阶多项式来拟合你的数据。仅仅因为低阶模型有效,高阶模型并不一定更好。高阶多项式常常在数据点之间产生严重的环。总是绘制你的数据。想想你将要构建的模型。然后绘制结果模型。使用您的眼睛来验证结果,而不是简单地查看r平方系数(尽管我也返回了该参数)。

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

引用作为

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

Matlab释放兼容性
创建与R2007b
兼容任何释放
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!

PolyfitnTools /演示/ html /