24小时热门版块排行榜    

查看: 1059  |  回复: 3

Bcrow

铁虫 (小有名气)

[求助] 关于matlab中曲线拟合的问题 已有1人参与

一个是用(p,s,mu)=polyfit(x,y,n)和(p,s)=polyfit(x,y,n)得到的p有很大的差别是什么原因
还有就是用cftool工具进行拟合如何调整数据的精度,因为拟合需要相关系数,但是4位小数精度显示的是1.0000
这是我算的数据:
x=[250 310 350 400 460 520 570 620 660 700 750];
y=[0.292 0.784 1.102 1.478 1.893 2.266 2.548 2.804 2.993 3.170 3.375];
[p,s,mu]=polyfit(x,y,2)

p =

  Columns 1 through 2

    -1.398000605465912e-01     1.016537059587622e+00

  Column 3

     2.191181873224175e+00


s =

        R: [3x3 double]
       df: 8
    normr: 1.482814488132882e-02


mu =

     5.081818181818182e+02
     1.672613632503443e+02

>> x=[250 310 350 400 460 520 570 620 660 700 750];
y=[0.292 0.784 1.102 1.478 1.893 2.266 2.548 2.804 2.993 3.170 3.375];
[p,s]=polyfit(x,y,2)

p =

  Columns 1 through 2

    -4.997077617509908e-06     1.115638459447335e-02

  Column 3

    -2.187800834333306e+00


s =

        R: [3x3 double]
       df: 8
    normr: 1.482814488132974e-02

>>
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
Bcrow: 金币+5 2015-10-16 09:10:49
不知道你在用cftool的时候有没有注意到上面有个可勾选的框,旁边写着center and scale。当你不勾选此框时,拟合结果与[p,s]=polyfit(x,y,2)结果一样,当你勾选时,拟合结果与[p,s,mu]=polyfit(x,y,2)结果一致。

center and scale功能就是将x data原始数据进行中心化与比例化处理。类似于线性插值技术。matlab在曲线拟合工具箱中加入这个选项是为了当X data与ydata拟合不好时,选择这个选项有利于得到更好的拟合效果。matlab通过正则化预测数据(Xdatal)的中心与比例,以有助于预测。

至于数据的拟合精度,你可以用R2来表示,至于怎么算你查下书就知道了。cftool拟合你这两种结果,发现R2没有太大的差别,我建议还是用[p,s]=polyfit(x,y,2)作为计算结果就可以了
没有极限,只有超越!
2楼2015-10-14 16:03:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Bcrow

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by 512095518 at 2015-10-14 16:03:28
不知道你在用cftool的时候有没有注意到上面有个可勾选的框,旁边写着center and scale。当你不勾选此框时,拟合结果与=polyfit(x,y,2)结果一样,当你勾选时,拟合结果与=polyfit(x,y,2)结果一致。

center and sc ...

问题是,我做的二次多项式拟合二次系数和一次系数用两种方法做出来差了几个数量级,这也太夸张了吧。另外,求确定系数和剩余标准差是这个课题的要求,主要我搜索论坛时搜到有用户贴的截图中cft中的是long e表示的,不过是好几年前的就是了
3楼2015-10-16 09:10:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

引用回帖:
3楼: Originally posted by Bcrow at 2015-10-16 09:10:39
问题是,我做的二次多项式拟合二次系数和一次系数用两种方法做出来差了几个数量级,这也太夸张了吧。另外,求确定系数和剩余标准差是这个课题的要求,主要我搜索论坛时搜到有用户贴的截图中cft中的是long e表示的, ...

用[p,s]=polyfit(x,y,2)得到的p才是你要的真正的拟合曲线系数,用[p,s,mu]=polyfit(x,y,2)得到的结果不是你要的,只是matlab本身觉得开可以对曲线进行优化,使得预测趋势更明显。后者只是强调一个走势。后者得到的结果是matlab经过变换后的结果。由于你这个数据的趋势比较好,所以你用后者修饰并看不出太明显的结果。
用polyval(p,x)可以返回你的拟合方程用x所得到的y值,你会发现第一种p代入所求得结果与你本来y值差不多,而第二种p所得结果差得远,所以第一种p才是你的拟合系数
没有极限,只有超越!
4楼2015-10-16 09:56:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Bcrow 的主题更新
信息提示
请填处理意见