matlab线性拟合前的准备工作

数据处理

在使用polyfit函数时,由于polyfit内部机制,当自变量 X (也就是你的数据n)出现以下几种情形,就会出现你所得到的警告:
1. 拟合多项式次数 大于或等于 X 的长度
2. 自变量 X 有重复数值或很相近的数值
3. X 可能需要变得更集中或者缩放一下
(help原始解释: Warning messages result if N is >= length(X), if X has repeated, or nearly repeated, points, or if X might need centering and scaling.)
当你的输入X的跨度过大时,matlab在不知道能否拟合的情况下,会给出警告,从而提醒你将数据通过缩放的方式变得更加集中。(当然,出现警告并运行后你仍可以得到正确的拟合曲线及参数)

缩放的方法有很多种,比如,你可以用你的数据里最大的数作为归一化因子,这样,你的数据就都被限制在了0~1之间,但是,切记,用归一化的数据求出的拟合多项式系数并非最终的结果,这个系数还需要进一步按比例缩放至原始数据对应的多项式系数。具体解法如下:

n=[1500:500:5500];
T=[78.59 83.04 85.01 86.63 87.09 85.87 84.67 82.50 80.54];
n_norm = n/n(end);
dt_norm=polyfit(n_norm,T,4);   % 对归一化数据拟合
dt =dt_norm./(n(end).^[4:-1:0])   % 缩放至原始数据

用以上方法得到的结果是:

dt = 0.0000   -0.0000   -0.0000    0.0190   57.2449

注意,前三个数据并非为0,而是非常小,从workspace里复制数据你会发现 dt 实际上是

2.38694638694556e-14  -4.90546490545337e-11 
-3.14394716394773e-06  0.0190336778036790 57.2448989898982

实际上你先前未做归一化数据处理得到的多项式系数跟以上得到的相同,只不过,matlab默认会给出警告,但是并不代表matlab没有正确拟合。但是,出现警告后,也并非任何时候都不是错误,所以,再没有经过上述归一化数据处理后,是很难判断的。所以,当出现警告后,最好查查警告造成的原因是上述3种中哪一个,重新处理后,再对比一下新的结果。

另外,对于多项式拟合,还有更简单的方式,可以先画出图形,比如:
plot(n,T,’r-o’)
然后直接在figure中选中曲线,在tools下拉菜单里选择basic fitting,弹出对话框里选4th degree polynomial,点击右下角向右的箭头,则右边窗口会自动展开拟合系数结果,你可以点击save to workspace,这样拟合系数就得到了。同时,拟合曲线会自动在原图中画出,方便你视觉上对比原图和拟合图形。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值