[转载]Matlab利用fminsearch实现参数估计
(2015-07-14 15:10:24)
标签:
转载 |
分类: MATLAB技术 |
fminsearch用来求解多维无约束的非线性优化问题,它的基本形式是:
[X,FVAL,EXITFLAG,OUTPUT] = FMINSEARCH(FUN,X0,OPTIONS)。
例如,
fun=inline('100*(x(2)-x(1)^2)^2+(1-x(1))^2','x');
[sx,sfval,sexit,soutput]=fminsearch(fun,[-1.2,1]);
但是,我们可以稍微对进行一些变换,就可实现利用fminsearch进行参数估计。
例如,原始信号发生器模型为:Z=3*exp(-0.4*x)+12*exp(-3.2*x);
假设有两个参数我们未知,即我们要进行参数估计的模型为
z=a(1)*exp(a(2)*x)+a(3)*exp(a(4)*x);
下面我们只需采用以下代码就可以实现上述参数的估计。
x=[0:0.2:4]';
Z=3*exp(-0.4*x)+12*exp(-3.2*x);
c=[1 1 1 1];
options=optimset('fminsearch');
options.TolX=0.001;
options.Display='off';
[a,sfval,sexit,soutput]=fminsearch(@fun,c,options,x,Z)
函数定义为:
function E=fun(a,x,Z)
z=a(1)*exp(a(2)*x)+a(3)*exp(a(4)*x);
E=sum((Z-z).^2);
结果为:
a =
sfval =
sexit =
soutput =
>>http://blog.sina.com.cn/xianfa110
相关文章: