資源簡介
Levenberg-Marquardt的Matlab程序
代碼片段和文件信息
%?計算函數f的雅克比矩陣,是解析式
syms?a?b?y?x?real;
f=a*exp(-b*x);
Jsym?=?jacobian(f[a?b])
%?擬合用數據
data_1=[0.25?0.5?1?1.5?2?3?4?6?8];
obs_1=[19.21?18.15?15.36?14.10?12.89?9.32?7.45?5.24?3.01];
%?2.?LM算法
%?初始猜測s
a0=10;?b0=0.5;
y_init?=?a0*exp(-b0*data_1);
%?數據個數
Ndata=length(obs_1);
%?參數維數
Nparams=2;
%?迭代最大次數
n_iters=50;
%?LM算法的阻尼系數初值
lamda=0.01;
%?step1:?變量賦值
updateJ=1;
a_est=a0;
b_est=b0;
%?step2:?迭代
for?it=1:n_iters
????if?updateJ==1
????????%?根據當前估計值,計算雅克比矩陣
????????J=zeros(NdataNparams);
????????for?i=1:length(data_1)
????????????J(i:)=[exp(-b_est*data_1(i))?-a_est*data_1(i)*exp(-b_est*data_1(i))];
????????end
????????%?根據當前參數,得到函數值
????????y_est?=?a_est*exp(-b_est*data_1);
????????%
- 上一篇:snake活動輪廓邊界提取源碼
- 下一篇:非線性控制時滯系統迭代學習控制算法仿真
評論
共有 條評論