所谓“拟合”,指的是在已有一组实验数据的前提下,研究这组数据有怎样的函数关系——最终结果是从这一组看似漫无规律的数据点中“找出”能用数学表达式表示的规律。
用数学语言描述的拟合定义如下:
一个典型的数据拟合过程包括以下几个步骤:
- 有一组实验/实测数据;
- 根据数据,猜测其有怎样的发展规律(例如总趋势是指数增长还是对数下降?),并写出一个含有待定系数的数学表达式;
- 利用MATLAB nlinfit函数,算出待定系数的数值,即得到拟合的规律
听起来不难,但有几个问题需要解决:
如何猜出来数据的规律?
方法一,看数据点的发展规律符合哪种特殊类型的函数
方法二,用“机理描述”的方法,推导出一个“概念数学模型”,当然这个“概念模型”也是要带参数、满足数据发展规律的。
实例分析
简单数据组合(x,y),显函数y=f(x)形式的拟合
x=[ 0,47,93,140,186,279,372,465,558,651];
y=[18.98,27.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22];
plot(x,y,'*')
b0=[43,0.6,0.1]; %初始参数值
fun=inline('b(1)*(1-b(2)*exp(-b(3)*x))','b','x');
[b,r,j]=nlinfit(x,y,fun,b0);
b %最佳参数
R=sum(r.^2) %误差平方和
y1=42.6643*(1-0.5483*exp(-0.0099*x));
plot(x,y,'*',x,y1,'-or')
语法说明
非线性拟合命令:[beta,r,J] = nlinfit(x,y,fun,beta0)
x,y为原始数据,fun是在M文件中定义的函数,beta0是函数中参数的初始值;beta为参数的最优值,r是各点处的拟合残差,J为雅克比矩阵的数值.
初始参数b0怎么求得?
首先看有几个待定系数,有几个待定系数,就将几组的实验数据带入方程中,结果必然是解一个可以求出一组参数的方程组,于是,各个参数的初始值就是这么来的了。
第一次来你博客哦,文章不错,赞一个。求认识,求回访啊,www.aiyw.net
不错的 顶一个
楼主文章不错啊!加油哈~路过顶个~