polyfitn

1维或n维多项式建模

31.9 k下载

更新2016年4月27日星期三09:17:04 +0000

查看许可协议

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 = rand(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

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

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

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

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

引用作为

约翰·迪里科(2023年)。polyfitn(//www.tianjin-qmedu.com/matlabcentral/fileexchange/34765-polyfitn), MATLAB中央文件交换。检索

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

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

PolyfitnTools /演示/ html /

版本 发表 发布说明
1.3

增加了p和DoF的文档,并在帮助中添加了一个示例。

1.2.0.0

删除数据中适合的nan

1.1.0.0

增加了系数的p值。

1.0.0.0