matlab 曲线拟合cftool中怎样设置待定参数的精度(增加小数位数)

想让参数有效位数更多一点,更精确一点啊
文件1.txt中原始数据为
10 1535.59206
20 1535.69676
30 1535.80146
40 1535.90616
50 1536.01086
60 1536.11556
70 1536.22026
在matlab中用以下程序
A=load('1.txt '); %载入文件*.txt中的数据
X=A(:,1) %取A的第一列数据
Z=A(:,2)
plot(X, Z);
用matlab的cftool中的线性多项式拟合以后出现
Linear model Poly1:
f(x) = p1*x + p2
Coefficients (with 95% confidence bounds):
p1 = 0.01047 (0.01047, 0.01047)
p2 = 1535 (1535, 1535)
p2应该是1535.48736,怎样才能精确到0.00001?请高手指教。

数据准备:
我们以一组多项式数据为例,进行示例,假如多项式是y=4x^3+3x^2+2产生的数据,x取0到3之间间隔为0.3的数。具体数据如下:

调用工具箱:
关于如何调用工具箱我在其他经验中有详细的介绍,有兴趣的可以查看。
这里我们用命令cftool进行调用拟合工具箱,在MATLAB主窗口中输入 cftool 回车
可以看到如下拟合工具箱界面

拟合操作步骤:
首先我们将要拟合的数据选入到工具箱中,如下图,在红圈处,点击向下三角,分别将要拟合的x y 选入,然后点击右侧的最上方的下三角,然后选择polynomial( 多项式),下面的degree是阶数,也就是x的最高次数,选择不同的degree,在图的左下角是拟合的结果,包括拟合的系数以及方差相关系数等,右侧是数据点,以拟合曲线

结果分析:
我们拟合的时候,一般情况下不知道要拟合的多项式是几阶的,我们一般调节degree都是从1逐渐增大,只要精度符合要求,就可以了,并不是精度越高越高。
拟合结果说明:
Linear model Poly3:
f(x) = p1*x^3 + p2*x^2 + p3*x + p4
Coefficients (with 95% confidence bounds):
p1 = 4 (4, 4)
p2 = 3 (3, 3)
p3 = 4.593e-15 (-3.266e-14, 4.185e-14)
p4 = 2 (2, 2)

Goodness of fit:
SSE: 2.386e-28
R-square: 1
Adjusted R-square: 1
RMSE: 5.839e-15
从以上可以看到最终拟合的y关于x的函数为:
f(x)=4*x^3+3*x^2+4.593e-15*x+2
我们可以看到一次项的系数为4.593e-15,实际上就是4.593*10^(-15),这个数量级完全可以认为是0,所以拟合的结果我们认为是:
f(x)=4*x^3+3*x^2+2
这里的方差SSE数量级为10的负28次方,相关系数 R-square=1,说明拟合的结果很好。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-04
评论区有个大佬 ‘paxingix ’已经说了,我再总结整理一下:
有两种办法获得参数: 1.使用cftool,保存拟合的模型后(比如存成myfitted_model)在命令行窗口使用coeffvalues(myfitted_model)来读出参数。 注意,这里保存方法是:cftool窗口菜单栏---‘Fit’--savetoworkspace,然后命名为myfitted_model。
2.不用cftool,使用polyfit(x,y,n)来对你的数据进行拟合,不加分号会直接给出各项参数; 或者在 workspace里面打开看参数时候会精确到小数点后好几位。【多说一句:polyfit是用来拟合一元多项式的线性回归模型,多元线性回归拟合时需要 fitlm函数】
第2个回答  推荐于2017-12-16
Z的精度没有降低,只是显示了四位小数而已,matlab的所有计算都是默认为长精度的!你可以在file中的preference中设置显示长度!

祝你学习愉快@!追问

我知道啦 在file中的preference中设置显示长度,方法如下:与大家共同分享啊
As an alternative to format, use preferences. Select Preferences from the File menu in the MATLAB desktop and use Command Window preferences

追答

嗯,你说的很对!其实这个设置没什么大的用处的!

追问

在file中的preference中设置显示长度,命令行里拟合出来的参数是1535.48736,可cftool里拟合出来的还是1535啊,本人必须要用cftool作图并拟合函数,没办法,请高手指教!

追答

这个实在是没有什么好办法了,其实你没必要需要这么高的精度,四位的有效数字是很够的啊!

本回答被网友采纳
第3个回答  2014-09-15
我觉得可以先减去1535,然后拟合了再加上
第4个回答  2012-05-24
想问一下,用CFtool为什么还要设置要求参数(a,b)的上限和下限,有什么原则,这个设置对所求的精度有没有影响?请帮忙回答一下,谢谢

matlab 曲线拟合cftool中怎样设置待定参数的精度(增加小数位数)
首先我们将要拟合的数据选入到工具箱中,如下图,在红圈处,点击向下三角,分别将要拟合的x y 选入,然后点击右侧的最上方的下三角,然后选择polynomial( 多项式),下面的degree是阶数,也就是x的最高次数,选择不同的degree,在图的左下角是拟合的结果,包括拟合的系数以及方差相关系数等,右侧是数...

matlab 曲线拟合cftool中怎样设置待定参数的精度(增加小数位数)
+ b*x,且a>0,b>0 。

matlab 曲线拟合cftool中怎样设置待定参数的精度(增加小数位数)
首先我们将要拟合的数据选入到工具箱中,如下图,在红圈处,点击向下三角,分别将要拟合的x y 选入,然后点击右侧的最上方的下三角,然后选择polynomial( 多项式),下面的degree是阶数,也就是x的最高次数,选择不同的degree,在图的左下角是拟合的结果,包括拟合的系数以及方差相关系数等,右侧是数据点,以拟合曲线。结果...

相似回答