• 大小: 0M
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: 其他  

资源简介

LM.m

资源截图

代码片段和文件信息

clear all;
clear all;
clc;

% 计算函数f的雅克比矩阵,是解析式
syms a b y x real;
f = a*exp(-b*x);
Jsym = jacobian(f[a b])

% 拟合用数据。参见《数学试验》,p190,例2
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 = 20;
% 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);
        % 计算误差
        d=obs_1-y_e

评论

共有 条评论