Matlab中⽤fit做曲线拟合
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)
matlab拟合数据ans =
45.54260.01010.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)
暂时只需要⽤到这些,更⾼级的要⽤的时候再说。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论