【Matlab】Curve曲线拟合后如何获得高精度参数

本文介绍了使用Matlab Curve工具进行曲线拟合时遇到的精度丢失问题及解决方案。通过保存拟合结果到工作区并提取高精度参数,解决了由参数截断导致的计算误差。

一 出现的问题

Matlab的Curve工具是非常实用的曲线拟合工具,关于它的使用网上一搜一大把。一直以来,我也在使用它进行曲线拟合,而且一直用的很好,没有感觉到不对,直到今天出现了这样一个情况:
在拟合完一条3次多项式曲线后,直接将红框中的参数扔到C语言里参与计算了。
在这里插入图片描述
在C中的程序如下所示:

	res = -2.121e05*pow(x,3) + 6.302e05*pow(x,2) - 6.241e05*x + 2.06e05

这个式子与Curve中的参数完全吻合,而真正到计算时,res会返回一个“令人感觉不对”的数。甚至我将拟合时用的点带入,都不能得到准确的结果。

二 问题所在

后来经过考虑,认为这是精度丢失造成的结果。所谓精度丢失,即上图红框中的参数只取了4位有效数字,这本来就是截断后的浮点数,是有精度损失的。因此在对计算精度非常敏感的场合,将会产生不可预知的误差。

三 问题解决

知道了原因,解决办法很简单——直接从Curve中获得高精度的参数不就好了?可是当我在网上一顿搜索无果后,只得自己想办法解决。
经过摸索,可以通过将Curve拟合结果保存到workspace中,然后分别提取参数的方式获得高精度参数。具体步骤如下:
1.在Curve中,Fit–>Save to Workspace
在这里插入图片描述
2.在弹出的窗口中,其实只选择第一个选项即可,其他两个可选可不选,因为我们要的参数就在第一个选项里,这

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜老越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值