张正友标定LM优化...

本文介绍了LM算法用于非线性最小二乘问题,特别是曲线拟合,强调了算法的线性近似和快速收敛特性。尽管LM算法需要对复杂函数的多个参数求偏导,对于大量参数的优化可能变得复杂,作者推荐在无法求导或参数众多时使用Powell算法。文中分享了理解LM算法的重要性,并提供了参考资料和学习路径,鼓励读者亲手实现代码以加深理解。
摘要由CSDN通过智能技术生成

引用 learnhard对于LM的说明,本人完全同意他的说法, LM算法可用于解决非线性最小二乘问题。多用于曲线拟合等场合。 LM算法的实现并不难,这里不讨论使用MATLAB等工具直接得到结果的过程,使用那些工具对于算法编程能力的提高无任何益处。  LM算法的关键是用模型函数 f 对待估参数向量p在其领域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。 LM算法需要对每一个待估参数求偏导,所以,如果你的拟合函数 f 非常复杂,或者待估参数相当地多,那么就不适合使用LM算法了,可以使用Powell算法,Powell算法不需要求导。对于急需自己编程(VC)用LM算法解决一些问题的朋友,如果你的数学几乎都忘了,那么你还是多请教一下自己的朋友吧,要不然连函数的偏导数都不记得怎么求了,是写不出代码的。网上有很多LM算法的示例程序,但是如果你不理解这个算法的过程,要想看懂它们,很难。而且要对自己定义的函数使用LM算法,更加应该明白该算法的原理。有一篇很不错的文章,解释了如何实现LM算法:http://www.ics.forth.gr/~lourakis/levmar/levmar.pdf 用Google搜索“Levenberg-Marquardt”,会有很多资料可参考。有一些现成的库也可以使用,不过,到你弄明白怎么用的时候,你都能够自己写出完整的代码了。当初我对LM也是很困惑,一直没弄清它的原理,网上的示例我怎么都用不对,后来一怒之下不再看网上的sample code,重新回到理论上,后来终于弄明白了,于是自己写出了完整的LM实现代码。需要说明的是,这是非线性无约束的问题,如果待估参数是有约束的(例如参数在某一范围内变动)

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值