Matlab代码如下:

clear; close all; clc;t = 0:199;
xs = 10*cos(0.5*t); %xs为理想的余弦信号
noise = randn(1,length(t)); %噪声信号
xn = xs+noise; %输入信号
dn = xs;
[w,en,yn] = LMS_Simple(xn,dn); %引用LMS算法实现滤波t_new = 0:length(yn)-1;figure;
subplot(511); plot(t,xs);                                         grid;title('理想信号');
subplot(512); plot(noise);                                        grid;title('随机噪声');
subplot(513); plot(t,xn,'r',t,dn,'blue');                         grid;title('输入信号和理想信号的对比');
subplot(514); plot(yn);                                           grid;title('输出信号');
subplot(515); plot(t,xn,'red',t_new,yn,'blue',t_new,en,'yellow'); grid;title('三种信号的比较');
legend('输入信号','输出信号','误差信号');%LMS算法
function [w,en,yn] = LMS_Simple(xn,dn) %xn为输入信号(行向量), dn为理想信号(行向量)M = 30; %滤波器的阶数zeroize = zeros( (ceil(length(xn)/M) * M) - length(xn) , 1); % 补零xn = cat(1,xn',zeroize);%行向量转置为列向量,补零dn = cat(1,dn',zeroize);%行向量转置为列向量,补零itr = length(xn); % 使得迭代次数为输入信号xn的长度w = zeros(M,itr); % 滤波器的系数矩阵en = zeros(itr,1); % 误差信号yn = zeros(length(xn)); %滤波器的输出信号lambda = max(eig(xn*xn')); %xn的自相关矩阵的最大特征值mu = 0.95 * (2/lambda); %求步长,0.95系数可设置,保证小于2/lambda%迭代更新滤波器的参数for k = M:itr  %要保证输入延时后的信号有效,所以实际的迭代次数只有(itr-M)次,x = xn(k:-1:k-M+1); %将输入信号延迟,使得滤波器的每个抽头都有输入y = w(:,k-1)'*x;  %计算出滤波器的输出en(k) = dn(k)-y;   %得出误差信号w(:,k) = w(:,k-1) + mu*en(k)*x;%迭代更新滤波器的系数yn(k) = w(:,k)'*x; %滤波器的最终输出end
end

这里的理想参考信号在实际应用中,常常不能事先确定,需要用其它方法来确定。

梯度∇为误差增加的方向,所以W(n+1)=W(n)+μ(-∇),而-∇为误差减小的方向。

自适应滤波器——LMS算法相关推荐

  1. 自适应滤波器更新算法-EP2

    文章目录 1.变步长 SC-MPNLMS 频域分块算法 1.1 算法原理 1.2 算法代码 1.3 算法优缺点 2.集成多种自适应滤波算法的回声消除器 1.1 算法原理 1.2 算法代码 1.3算法优 ...

  2. LMS算法实现自适应滤波器

    LMS算法实现自适应滤波器 // LMS.c#include "LMS.h"/* xn--------输入的信号序列(列向量)* itr-------迭代次数,标量,默认为xn的长 ...

  3. lms c语言,LMS算法实现自适应滤波器(C语言版)

    上次只是发表了MATLAB版本的LMS算法,这次将C语言版的LMS算法一并发表,其中涉及到雅克比公式求矩阵最大特征值的部分我将后续发表到博客中,此C语言版本是本人自己研究MATLAB语言,然后独自翻译 ...

  4. LMS自适应滤波器算法及其改进

    -- 年初DSP课程期末设计时为了答辩做的PPT,内容背的滚瓜烂熟,给老师留下了深刻的印象,想必整个系也没有第二个人像我这么上心了,因此最后决定把PPT放到博客上:此外因为不希望PPT上有太多字,所以 ...

  5. 自适应滤波器原理——频域分块LMS算法(FDAF)

    在讲频域分块LMS之前建议大家回顾一个时域分块LMS算法 时域分块LMS: Block  LMS的误差计算 和 权重更新公式中, :输出信号是输入信号与滤波器系数的线性卷积 :更新梯度是误差信号与输入 ...

  6. lms自适应滤波器实现噪声干扰的语音恢复_ZLG深度解析语音识别技术

    语音识别已成为人与机器通过自然语言交互重要方式之一,本文将从语音识别的原理以及语音识别算法的角度出发为大家介绍语音识别的方案及详细设计过程. 语言作为人类的一种基本交流方式,在数千年历史中得到持续传承 ...

  7. lms自适应滤波器matlab_自适应回声消除器简介

    本文介绍了一种基于最小均方(LMS)算法的基本声学回声消除器.声学回声消除器对于许多现代通信产品是必需的.我确定你曾经遇到过在电话讲话时听到声音的时候,对吗?嗯,这是声学回声的一个例子.声学回声是一个 ...

  8. 4)自适应滤波(一)[LMS算法]

    目录 一.LMS算法 1.滤波器--改变信号频谱 模拟滤波器: 数字滤波器: 2.自适应滤波器简介 自适应滤波器: 非自适应滤波器: 自适应滤波器应用: 自适应滤波场景: 自适应滤波处理逻辑(处理非平 ...

  9. 浅谈自适应滤波器---(快速RLS算法)

    在上一篇博客中(浅谈自适应滤波器)我给大家介绍了关于自适应滤波器的一些入门级的知识,并分析了常规RLS算法单次迭代的计算量级为O[N2],当阶数N增大时相应的计算量显著增大,为了将计算量级降低到O[N ...

最新文章

  1. 今日看点:“靠脸进站”的刷脸系统究竟是如何实现的
  2. 剑指OFFER之二维数组中的查找(九度OJ1384)
  3. ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解
  4. 客户每次请求Web页面过程
  5. 字典,和字典的增删改查
  6. 暑期训练日志----2018.8.11
  7. Python enumerate() 函数
  8. 网络规划设计师复习笔记
  9. 相对、绝对、固定定位,以及其层级关系和脱离文档流的影响
  10. mysql 数据透视_sql怎么做数据透视表
  11. 线性表:2.线性表的顺序存储结构--顺序表及C语言实现
  12. 用鼠标在窗口中画方形的程序------基于OpenCV+VS
  13. ant使用ftp上传数据时配置的一个报错问题
  14. 欧洲最大双面发电光伏项目全部采用英利组件
  15. 分子重构技术_4. 串珠模型重构
  16. UCI数据集整理(附论文常用数据集)
  17. 驱动上下游高效协同,跨境B2B电商平台如何释放LED产业供应链核心价值
  18. Fortran相关图书推荐
  19. 使用modelsim仿真时出现“vopt returned success but vsim could not find a design to simulate!”错误
  20. c++一元三次方程求解(NOIP2001 提高组)

热门文章

  1. 《淘宝技术这十年》读书笔记 (三). 创造技术TFS和Tair
  2. Windows网络编程 — UDP完成端口的实现
  3. 用Origin绘制单Y轴多X轴图(or单X多Y)
  4. 怎么修改代码文件创建时间
  5. 电脑上被误删的文档怎么恢复?4个实用妙招解决
  6. qq更换头像php简单,Typecho将评论头像修改为QQ头像
  7. 【建模干货】maya2020快捷键大全,全新整合分类,建模小白必看
  8. 扩展欧几里得算法(exgcd)
  9. powerworld电力系统仿真,潮流计算,短路计算,电力系统分析。潮流计算对比,牛拉法,PQ分解法对比
  10. matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用