当前位置: 首页 > news >正文

(61)使用LMS算法估计线性预测器并计算估计误差的MATLAB仿真

文章目录

  • 前言
  • 一、仿真说明
  • 二、仿真代码
  • 三、仿真结果
    • 1.LMS自适应滤波器权向量更新曲线
    • 2.LMS自适应滤波器算法学习曲线
    • 3.期望信号与LMS自适应滤波器输出信号


前言

本文介绍了LMS自适应滤波器对线性预测器系统权系数的估计,进行100次独立实验,计算平均估计误差,得到LMS算法的学习曲线。


一、仿真说明

考虑一个AR过程u(n),使其为二阶线性预测器的输入,在μ=0.05的情况下,使用LMS滤波器来估计w1和w2。在此基础上,滤波器进行100次独立实验,计算平均估计误差,得出LMS算法的学习曲线。

二、仿真代码

使用LMS算法估计线性预测器的仿真代码:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%程序功能:产生500点的样本函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
close all
clear allN = 500;                           % 样本序列长度
M = 100;                           % 独立试验次数
sigma = sqrt(0.0731);              % 标准差
a = [1 -0.975 0.95];               % AR模型系数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%程序功能:用LMS算法来估计权系数w1和w2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
miu = 0.05;                                   % 步长
w = zeros(2,N);                               % 初始化权向量
w_sum = zeros(2,N);                           % 100次独立实验的权向量求和
e_sum = zeros(1,N);for m = 1:M                                   % 100次独立实验vn = sigma * randn(N,1);                  % 高斯噪声un = filter(1,a,vn);                      % 产生一组独立信号Nx1e = zeros(1,N);                           % 初始化估计误差d_hat = zeros(1,N);                       % 初始化期望信号估计量for n = 3:N-1                             % 信号向量时刻的迭代w(:,n+1) = w(:,n) + miu * un(n-1:-1:n-2) * conj(e(n));  % 更新权向量d_hat(n+1) = w(:,n+1)' * un(n:-1:n-1);                  % 更新期望信号估计e(n+1) = un(n+1) - d_hat(n+1);        % 计算估计误差end% 累加每一次实验的运行结果w_sum = w_sum + w;                        % 权向量e_sum = e_sum + e.^2;                     % 学习误差
endw_avrg = w_sum/M;                              % 100次独立实验权向量的均值
e_avrg = e_sum/M;                              % 100次独立实验的学习误差均值% 绘制权向量更新曲线
t = 1:N;
width_line = 1.5;                              % 绘图线宽
figure()
plot(t,w','LineWidth',width_line)              % 权向量
grid on
hold on
plot(t,w_avrg','LineWidth',width_line)         % 权向量平均值
title(['LMS算法权向量更新曲线(步长=',num2str(miu),')'])
legend('一次实验权系数w1','一次实验权系数w2', ...'100次实验w1均值','100次实验w2均值', ...'Location','east')
xlabel('迭代次数')
ylabel('权向量')% 绘制学习曲线
figure()
plot(t,e_avrg,'LineWidth',1);
grid on
title(['LMS算法学习曲线(步长= ',num2str(miu),')'])
xlabel('迭代次数')
ylabel('均方误差')figure()
subplot(211)
plot(un,'LineWidth',width_line)
grid on
title('期望信号')
xlabel('time index'); ylabel('signal value');
subplot(212)
plot(d_hat,'LineWidth',width_line)
grid on
title('输出信号')
xlabel('time index'); ylabel('signal value');

三、仿真结果

1.LMS自适应滤波器权向量更新曲线

在这里插入图片描述

2.LMS自适应滤波器算法学习曲线

在这里插入图片描述

3.期望信号与LMS自适应滤波器输出信号

在这里插入图片描述

从仿真结果可见,LMS自适应滤波器逐渐收敛于最优维纳解,输出信号近似期望信号。




http://www.mrgr.cn/news/67420.html

相关文章:

  • Wecom酱搭建企业微信发送消息
  • nginx配置代理地址
  • 【Orange Pi 设备】window11主机下使用VNC可视化控制RK3566
  • 7.2 设计模式
  • 数据结构acwing和洛谷p8085作业
  • ctfshow(162)--文件上传漏洞--远程文件包含
  • .NET 白名单文件通过反序列化执行系统命令
  • PN结特性及反向饱和电流与反向漏电流详解
  • 【机器学习】聚类算法分类与探讨
  • 1.6K+ Star!Ichigo:一个开源的实时语音AI项目
  • 边缘计算的基本概念与实践
  • 探讨Mysql和Redis的数据实时同步方案
  • Java之随机点名器(4)
  • LeetCode题练习与总结:O(1) 时间插入、删除和获取随机元素--380
  • IO模块赋能污水处理
  • 【Git】Liunx环境下Git的使用:“克隆,提交,推送“
  • 基于Jeecgboot3.6.3vue3的flowable流程增加online表单的审批支持(一)整体思路
  • linux arm板启动时间同步服务
  • ATom:来自中央大学高分辨率气溶胶质谱仪(HR-AMS)的 L2 测量数据
  • 青少年编程与数学 02-003 Go语言网络编程 14课题、Go语言Udp编程
  • qt QMovie详解
  • 【Windows】轻松搞定网络问题!掌握`ipconfig`与`ping`命令的奥秘
  • 解锁炎症和肿瘤免疫治疗新靶点:TREM1&TREM2
  • 前端UniApp面试题及参考答案(100道题)
  • Java八股文
  • Python数据分析NumPy和pandas(二十五、数据整理--连接、合并和重塑 之二:数据连接合并操作)