资源简介
该算法是自己编的一个lm算法,是基于MATLAB的程序
代码片段和文件信息
%%%%%%%%%函数等式为%%%%%%%%
syms a b x f;
%%%f=a*cos(b*x) + b*sin(a*x);
%%%%%下面出现J表示的是Jacobian matrix%%%%%%%%
%1,需要拟合的数据%%%%%%%%%%%
data_0=[0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3.8 4.0 4.2 4.4 4.6 4.8 5.0 5.2 5.4 5.6 5.8 6.0 6.2];
obs_0=[102.225 99.815 -21.585 -35.099 2.523 -38.865 -39.020 89.147 125.249 -63.405 -183.606 -11.287 197.627 98.355 -131.977 -129.887 52.596 101.193 5.412 -20.805 6.549 -40.176 -71.425 57.366 153.032 5.301 -183.830 -84.612 159.602 155.021 -73.318 -146.955];
% 2. LM算法
%对 a b 赋初始值
%a0=50;b0=50;
for a0=91:120
for b0=91:120
% a_est=zeros(3030);
% b_est=zeros(3030);
% a_lm=zeros(3030);
% b_lm=zeros(3030);
%f0=a0*cos(b0*data_0)+b0*sin(a0*data_0);
% 数据个数
Ndata=length(obs_0);
% 参数维数
Nparams=2;
% 迭代最大次数
n_iters=50;
% LM算法的阻尼系数初值
lamda=0.01;
% step1: 变量赋值
updateJ=1;
a_est(a0-90b0-90)=a0;
b_est(a0-90b0-90)=b0;
% step2: 迭代
for it=1:n_iters
if updateJ==1
% 根据当前估计值,计算雅克比矩阵
J=zeros(NdataNparams);
for i=1:length(data_0)
J(i:)=[cos(b_est(a0-90b0-90)*data_0(i))+data_0(i)*b_est(a0-90b0-90)*cos(a_est(a0-90b0-90)*data_0(i)) sin(a_est(a0-90b0-90)*data_0(i))-a_est(a0-90b0-90)*data_0(i)*sin(b_est(a0-90b0-90)*data_0(i))];
end
% 根据当前参数,得到函数值
f_est =a_est(a0-90b0-90)*cos(b_est(a0-90b0-90)*data_0) + b_est(a0-90b0-90)*sin(a_est(a0-90b0-90)*data_0);
% 计算误差
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论