加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]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 =

    3.0004   -0.4001   11.9994   -3.2000

sfval =

  1.5099e-007

sexit =

     1

soutput =

    iterations: 190

     funcCount: 322

     algorithm: 'Nelder-Mead simplex direct search'

>>http://blog.sina.com.cn/xianfa110

相关文章:

自编最小二乘法的Matlab参数辨识程序(含实例)

Matlab非线性方程求解器fsolve总结(含实例)

采用feval自编的Matlab数值积分函数

[转]Matlab中利用feval统一函数的调用方式

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有