本文出发点:使用matlab进行曲线拟合,主要是涉及Levenberg-Marquardt(LM)这一非线性最小二乘算法,具体有点可参考维基百科。但当我们对时间比较敏感,尤其是涉及大量的曲线拟合的时候,比如一幅图像,C语言的代码显得更加利索。经过LM算法维基百科中的实现,找到了levamr这一软件包,经过努力,终于实现了使用levamr进行曲线拟合。一个月之前的实现了levamr2.5,现在尝试levamr2.6,同时写下来方便以后使用。忘得太快了~
电脑配置:xp系统,vs2008,CLAPACK-3.1.1-VisualStudio,levmar-2.5,cmake-2.8.12.1-win32-x86.exe
步骤一、下载需要的程序包
clack:http://www.netlib.org/clapack/CLAPACK-3.1.1-VisualStudio.zip
cmake:http://www.cmake.org/files/v2.8/cmake-2.8.12.1-win32-x86.exe
levamr2.5:http://users.ics.forth.gr/~lourakis/levmar/levmar-2.5.tgz
以上软件包下载并解压,安装cmake。
步骤二、编译clack
为了避免混淆,删除CLAPACK-3.1.1-VisualStudio的LIB中的文件。双击clack.vcproj打开工程项目文件,下面的各编译步骤都编译成debug模式。</