Matlab中用fminsearch实现参数估计发布:Arquine
9Jan
文章的主要思想来源于Matlab|Simulink仿真世界的一篇类似的文章。我这里把这个思想引入到我们的体系来,并以一个新的例子讲解这一用法。
fminsearch用来求解多维无约束的非线性优化问题,它的基本形式是:
[X,FVAL,EXITFLAG,OUTPUT] = FMINSEARCH(FUN,X0,OPTIONS).
大段的Matlab帮助文档我就不翻译解释了,有兴趣的朋友可以参见Matlab联机帮助,我这里只介绍他在参数估计中的作用。
在参数估计中经常用到正态分布的参数估计。在matlab系统中有一个函数叫做normfit就直接可以完成这样的参数估计,返回均值mu和均方差 sigma的估计,但是这里有一个要求,就是它的输入信息必须是随机的数字序列。如得到1000个服从正态分布的随机数向量R,用命令[phat pci]=normfit(R),就可以得到参数估计了。然而如果我我们得知某些已经处于pdf函数曲线上的点时,这时需要对函数进行拟合运算。
估计参数的原理是从已知的一序列数据中,对于给定的任何一组参数,计算用其估计数据得到的方差,然后利用fminsearch函数求当方差满足最小的时候的参数,这就是需要估计的参数。
来看一下下面的列子:
smu=10,ssig=25;
%假设原来均值方差分别为:10,25
R=randn(1000,1)*ssig+smu;
%生成满足要求的1000个随机数
[y x]=myhist(R);
%生成统计信息,x,y分别表示分组中值序列和落入该组的统计数目
bar(x,y)
%绘制直方图
hold on
plot(x,y,'ro')
%绘制对应点
[pms mse]=normpdffit(x,y,8,20);