• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab中用fit做曲线拟合

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.确定要拟合的类型

  一般情况下matlab会直接提供常用的类型,用fittype创建拟合模型。至于matlab具体提供了哪些模型,参见帮助"List of library models for curve and surface fitting"

ft = fittype( \'gauss1\' ); %高斯拟合

  如果库中没有自己想要的拟合形式,可以自己进行定义,此时使用匿名函数是很方便的,格式如下

ft = fittype(@(a,b,c,x) a*x^3 + b*x^2 +c*x );

  使用自定义拟合形式需要注意几点:

  • 自变量必须是x
  • 参数要放在自变量前面,在上面的例子中,匿名函数参数的形式为(a, b, c, x),便遵循了这一规则

2.要拟合的数据格式

  在最简单的情况下,即拟合两个向量X,Y,则其必须是列向量

3.拟合

 使用fit进行拟合

fitresult= fit( xData, yData, ft);

  其输出fitresult是一个cfit型的对象(object),主要包含两个内容:1,拟合模型,即第一步中确定的拟合类型;2,拟合所得系数的值。例如对第一步中所创建的高斯模型,其fitresult 的值为

fitresult = 
     General model Gauss1:
     fo(x) =  a1*exp(-((x-b1)/c1)^2)
     Coefficients (with 95% confidence bounds):
       a1 =       45.54  (42.45, 48.64)
       b1 =     0.01011  (0.0101, 0.01012)
       c1 =   0.0002551  (0.0002353, 0.0002748)

  获得了这样一个object,如何把其中的系数提取出来呢?这个要用到coeffvalues函数

>> coeffvalues(fitresult)

ans =

   45.5426    0.0101    0.0003

4.获取拟合优度

  现在已经获得了拟合系数,那到底拟合得怎么样呢?可以使用下面的格式获取拟合优度

[fitresult ,gof] = fit(X,Y,\'gauss1\');

  gof是一个结构体,包含4个量

sse:Sunm of squares due to error
rsquare:R-square 这个就是线性回归里的那个R2,与线性回归里的具有同样的意义
dfe:Degrees of freedom in the error,不懂
adjrsquare: 也不懂
rmse: 误差的均方根值(rms)

  暂时只需要用到这些,更高级的要用的时候再说。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Rust SGX SDK v0.9.0 发布 | 移植 Rust 程序到SGX里不再困难!发布时间:2022-07-18
下一篇:
【Rust日报】 2019-03-01发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap