利用nlinfit函数实现数据非线性拟合 |
您所在的位置:网站首页 › 函数拟合模型怎么用函数表示 › 利用nlinfit函数实现数据非线性拟合 |
所谓“拟合”,指的是在已有一组实验数据的前提下,研究这组数据有怎样的函数关系——最终结果是从这一组看似漫无规律的数据点中“找出”能用数学表达式表示的规律。 用数学语言描述的拟合定义如下: 一个典型的数据拟合过程包括以下几个步骤: 有一组实验/实测数据;根据数据,猜测其有怎样的发展规律(例如总趋势是指数增长还是对数下降?),并写出一个含有待定系数的数学表达式;利用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怎么求得? 首先看有几个待定系数,有几个待定系数,就将几组的实验数据带入方程中,结果必然是解一个可以求出一组参数的方程组,于是,各个参数的初始值就是这么来的了。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |