1.肯定要拟合的类型dom
通常状况下matlab会直接提供经常使用的类型,用fittype建立拟合模型。至于matlab具体提供了哪些模型,参见帮助"List of library models for curve and surface fitting"ide
ft = fittype( 'gauss1' ); %高斯拟合
若是库中没有本身想要的拟合形式,能够本身进行定义,此时使用匿名函数是很方便的,格式以下函数
ft = fittype(@(a,b,c,x) a*x^3 + b*x^2 +c*x );
使用自定义拟合形式须要注意几点:post
- 自变量必须是x
- 参数要放在自变量前面,在上面的例子中,匿名函数参数的形式为(a, b, c, x),便遵循了这一规则
2.要拟合的数据格式spa
在最简单的状况下,即拟合两个向量X,Y,则其必须是列向量 (通常定义都是行向量,使用转置 a‘)code
3.拟合htm
使用fit进行拟合对象
fitresult= fit( xData, yData, ft);
其输出fitresult是一个cfit型的对象(object),主要包含两个内容:1,拟合模型,即第一步中肯定的拟合类型;2,拟合所得系数的值。例如对第一步中所建立的高斯模型,其fitresult 的值为blog
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)
暂时只须要用到这些,更高级的要用的时候再说。