拟合matlab,以编程方式拟合 - MATLAB & Simulink - MathWorks 中国

适用于多项式模型的 MATLAB 函数

有两个 MATLAB® 函数可通过多项式对您的数据建模。

多项式拟合函数

函数说明polyfit(x,y,n) 通过最大限度地减小数据与模型偏差的平方和(最小二乘拟合),求拟合 y 数据的 n 次多项式 p(x) 的系数。

polyval(p,x) 返回基于 x 进行计算,且由 polyfit 确定的 n 次多项式的值。

此示例说明如何使用多项式对数据建模。

在时间 t 的多个值处测量数量 y。

t = [0 0.3 0.8 1.1 1.6 2.3];

y = [0.6 0.67 1.01 1.35 1.47 1.25];

plot(t,y,'o')

title('Plot of y Versus t')

667e59efecf386ce419fd49b5aa25440.png

您可尝试使用以下二次多项式函数对此数据进行建模:

y=a2t2+a1t+a0.

通过最大限度地减小数据与模型偏差的平方和(最小二乘拟合),计算未知系数 a0、a1 和 a2。

使用 polyfit 求多项式系数。

p = polyfit(t,y,2)

p = 1×3

-0.2942 1.0231 0.4981

MATLAB 以降幂计算多项式系数。

数据的二次多项式模型由以下方程给出:

y=-0.2942t2+1.0231t+0.4981.

按统一的时间间隔 t2 计算多项式。然后,在同一个图中绘制原始数据和模型。

t2 = 0:0.1:2.8;

y2 = polyval(p,t2);

figure

plot(t,y,'o',t2,y2)

title('Plot of Data (Points) and Model (Line)')

e9b74f588255bc815c28eb202375eba3.png

按数据时间向量计算模型

y2 = polyval(p,t);

计算残差。

res = y - y2;

绘制残差图。

figure, plot(t,res,'+')

title('Plot of the Residuals')

c75ece1f31e3a7e410869954bbb6d15e.png

请注意,二阶拟合大致遵循数据的基本形状,但并不能捕获数据似乎具备的平滑曲线。残差似乎存在一个模式,意味着可能需要不同的模型。如下所示,五次多项式在遵循数据波动方面表现更佳。

重复该练习,不过这次使用来自 polyfit 的五次多项式。

p5 = polyfit(t,y,5)

p5 = 1×6

0.7303 -3.5892 5.4281 -2.5175 0.5910 0.6000

在 t2 上计算多项式,并在新的图窗窗口中基于数据绘制拟合图。

y3 = polyval(p5,t2);

figure

plot(t,y,'o',t2,y3)

title('Fifth-Degree Polynomial Fit')

cdb146347b448bf39c30833e1f221f4e.png

注意

如果您尝试对物理情况建模,务必考虑特定阶次的模型是否对您的情况有意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值