matlab fittype 求不出参数,[转]matlab 中fit fittype

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,则其必须是列向量  (一般定义都是行向量,使用转置 a‘)

3.拟合

使用fit进行拟合

fitresult= fit( xData, yData, ft);

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

b83b07cad6c50f99774d7b34794cca49.gif

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)

c9bca3dc25434f326b3d04de213f6323.gif

获得了这样一个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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值