LMS 自适应滤波算法原理和实现(不使用自带函数库)
1.基本原理
y(n)=x(n)wTe(n)=d(n)−y(n)w(n+1)=w(n)+μe(n)x(n)\begin{aligned} &y(n)=\pmb{x}(n)\pmb{w}^T\\ &e(n)=d(n)-y(n)\\ &w(n+1)=w(n)+\mu e(n)\pmb{x}(n) \end{aligned} y(n)=xx(n)wwTe(n)=d(n)−y(n)w(n+1)=w(n)+μe(n)xx(n)
2.代码实现
LMS:使用不含噪声的信号作为参考信号
%自适应滤波器的最小均方算法LMS%初始化参数
clear;close;
t = 0:0.0001:1-0.0001;
f = 4;%产生正弦信号和噪声污染的信号
d = cos(2 * pi * f * t) + sin(2 * pi * f * t);
n = randn(size(t));
x = d +0.5* n;w = [0 0.5]; % w的len是2,所以是2阶
u = 0.0002; % 梯度下降算法的学习率%2阶自适应滤波
y = zeros(10000, 1);
e = zeros(10000, 1);for i = 1:10000 - 1y(i + 1) = x(i : i + 1) * w';e(i + 1) = d(i + 1) - y(i + 1);w = w + 2 * u * e(i + 1) * x(i : i + 1);
end%画图
figure(1);subplot(311);plot(t, d);axis([0 1 -5 5]);xlabel('时间');ylabel('s幅度');
hold onsubplot(312);plot(t, x);axis([0 1 -5 5]);xlabel('时间');ylabel('x幅度');
hold onsubplot(313);plot(t, y);axis([0 1 -5 5]);xlabel('时间');ylabel('e幅度');
LMS:使用噪声作为参考信号
%自适应滤波器的最小均方算法LMS%初始化参数
clear;close;
t = 0:0.0001:1-0.0001;
f = 4;%产生正弦信号和噪声污染的信号
s = cos(2 * pi * f * t) + sin(2 * pi * f * t);
x = randn(size(t));
d = s +0.5* x;w = [0 0.5]; % w的len是2,所以是2阶
u = 0.0002; % 梯度下降算法的学习率%2阶自适应滤波
y = zeros(10000, 1);
e = zeros(10000, 1);for i = 1:10000 - 1y(i + 1) = x(i : i + 1) * w';e(i + 1) = d(i + 1) - y(i + 1);w = w + 2 * u * e(i + 1) * x(i : i + 1);
end%画图
figure(1);subplot(311);plot(t, s);axis([0 1 -5 5]);xlabel('时间');ylabel('s幅度');
hold onsubplot(312);plot(t, d);axis([0 1 -5 5]);xlabel('时间');ylabel('x幅度');
hold onsubplot(313);plot(t, e);axis([0 1 -5 5]);xlabel('时间');ylabel('e幅度');
扩展成三阶:
注意:发现权重的初值对去噪效果的影响比较大
%自适应滤波器的最小均方算法LMS%初始化参数
clear;close;
t = 0:0.0001:1-0.0001;
f = 4;%产生正弦信号和噪声污染的信号
s = cos(2 * pi * f * t) + sin(2 * pi * f * t);
x = randn(size(t));
d = s +0.5* x;w = [0 0.5 0]; % w的len是3,所以是3阶
u = 0.0002; % 梯度下降算法的学习率%2阶自适应滤波
y = zeros(10000, 1);
e = zeros(10000, 1);for i = 1:10000 - 2y(i + 1) = x(i : i + 2) * w';e(i + 1) = d(i + 1) - y(i + 1);w = w + 2 * u * e(i + 1) * x(i : i + 2);
end%画图
figure(1);subplot(311);plot(t, s);axis([0 1 -5 5]);xlabel('时间');ylabel('s幅度');
hold onsubplot(312);plot(t, d);axis([0 1 -5 5]);xlabel('时间');ylabel('x幅度');
hold onsubplot(313);plot(t, e);axis([0 1 -5 5]);xlabel('时间');ylabel('e幅度');
LMS 自适应滤波算法原理和实现(不使用自带函数库)相关推荐
- 回声消除(AEC)原理、算法及实战——频域块LMS自适应滤波算法(FDAF)
块LMS自适应滤波算法中的线性卷积和线性相关均可以采用快速傅里叶变换(FFT)来实现.因此,块LMS自适应滤波算法的有效实现方法实际上是利用FFT算法在频域上完成滤波器系数的自适应.这样实现的块LMS ...
- 传统语音增强——最小均方(LMS)自适应滤波算法
一.语音降噪的意义 语音降噪主要研究如何利用信号处理技术消除信号中的强噪声干扰,从而提高输出信噪比以提取出有用信号的技术.消除信号中噪声污染的通常方法是让受污染的信号通过一个能抑制噪声而让信号相对不变 ...
- LMS自适应滤波算法的 matlab实现
算法思路 1LMS算法实现步骤: 1).令起始时刻 i=0自适应滤波器的系数矢量W(0)为任意值: 2).根据输入信号矢量X(i) ,利用期望信号d(i) 和滤波器的输出信号 y(i)计算误差信号e( ...
- 回声消除中的自适应滤波算法综述
作者:凌逆战 博客园地址:https://www.cnblogs.com/LXP-Never/p/11773190.html 自适应回声消除原理 声学回声是指扬声器播出的声音在接受者听到的同时,也通过 ...
- LMS自适应滤波器算法及其改进
-- 年初DSP课程期末设计时为了答辩做的PPT,内容背的滚瓜烂熟,给老师留下了深刻的印象,想必整个系也没有第二个人像我这么上心了,因此最后决定把PPT放到博客上:此外因为不希望PPT上有太多字,所以 ...
- 箕舌线图像怎么画matlab,一种类箕舌线函数的变步长归一化自适应滤波算法
[1] 孙慧贤, 刘建成, 崔佩璋, 等. 基于多通道最小均方算法的多发单收同车电台射频干扰对消[J]. 电子与信息学报, 2019, 41(3): 556–562. SUN Huixian, LIU ...
- Matlab自适应滤波算法 LMS小白通俗易懂版
Matlab自适应滤波算法 在学习自适应算法的过程中,入门阶段,学习了LMS算法.NLMS算法,并用Matlab对算法进行了复现. LMS 最小均方(LMS)是一种搜索算法,它通过对目标函数进行适当修 ...
- LMS自适应滤波的MATLAB实现
LMS自适应滤波的MATLAB实现 LMS自适应滤波是使输入序列(多频混合带噪语音信号)与期望输出序列(纯语音信号)之间的均方误差最小.目前,实现LMS自适应滤波的方法有很多,这里我给出几种简单,方便 ...
- 基于Matlab的自适应滤波算法及其应用
Demo1.m - adaptive filter demo 算法包括:LMS.NLMS.RLS 案例: 1.echo cancellation 音频回声消除 2.audio + white nois ...
最新文章
- 2021年春季学期-信号与系统-第九次作业参考答案-第五小题
- go支持对函数返回值命名,可以解决函数返回值的顺序书写问题
- 【Java多线程】生产者消费者问题
- GraphQL在SAP Kyma中的广泛应用
- 解析邻居的耳朵音乐地址(单页下载)
- python抽象基类的作用_Python:多态、鸭子模型和抽象基类
- ProcessBuilder执行bash脚本
- MapReduce之join操作
- Pulling without specifying how to reconcile divergent branches is discouraged.
- 关于VGA的分辨率。。。。图解
- 传送的谷歌应用程序打不开_如何使用Google Home将内容传送到您的Chromecast
- 百度不显示免流量服务器,【免流】本地一键直连/百度直连/百度/直连
- 未来已来!域乎“区块链+产业应用赋能精英论坛”成功举办
- BMZ-MISC-损坏的压缩包
- latex参考文献生成双语对照文献表
- java,jsp页面添加提示图以及提示音乐
- Hadoop入门——初识Hadoop 自学hadoop视频教程
- linux0.11缓冲区管理程序阅读注释笔记
- wincc 数据库的连接方法
- 码农与大神也许只是一步之遥