前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自适应滤波器(adaptive filter)(3)–LMS算法MATLAB

自适应滤波器(adaptive filter)(3)–LMS算法MATLAB

作者头像
FPGA开源工作室
发布2021-11-05 09:43:22
3.4K0
发布2021-11-05 09:43:22
举报
文章被收录于专栏:FPGA开源工作室FPGA开源工作室

自适应滤波器(Adaptive Filter)(1)–简介 自适应滤波器(adaptive filter)(2)–LMS算法

自适应滤波器的介绍与LMS算法推到过程可参照以上两篇文章。一下是matlab演示自适应滤波器 LMS算法。

LMS算法的核心是

代码语言:javascript
复制
   y(i)=w*XN';%y(n)=W*XN;
   e(i)=d(i)-y(i);
   w=w+u*e(i)'*XN;

函数ADLMS:

代码语言:javascript
复制
% 输入参数:
%     xn   输入的信号序列     
%     d   所期望的响应序列    
%     k    滤波器的阶数        (标量)
%     u   收敛因子(步长)      (标量)     要求大于0,小于xn的相关矩阵最大特征值的倒数    
% 输出参数:
%     W    滤波器的权值矩阵     (矩阵)
%     e   误差序列(itr x 1)    
%     y   实际输出序列         
function [y,w,e]=ADLMS(xn,d,k,u)
itr = length(xn);
e = zeros(1,itr);             % 误差序列,en(k)表示第k次迭代时预期输出与实际输入的误差
w  = zeros(1,k);             % 每一行代表一个加权参量,每一列代表-次迭代,初始为0
y= zeros(1,itr);              %存放输出信号
% 迭代计算
for i = (k+1):itr                  % 第k次迭代
   XN=xn((i-k+1):(i));
   y(i)=w*XN';%y(n)=W*XN;
   e(i)=d(i)-y(i);
   w=w+u*e(i)'*XN;
end
代码语言:javascript
复制
clc
clear all
close all

Fs =44100;
fc =1000;
L=44100;

t=1/Fs:1/Fs:L/Fs;
s=sin(2*pi*t*fc);
figure(1);
subplot(4,1,1);
plot(t(1:512),s(1:512));grid;
ylabel('幅度');
xlabel('时间');
title('原始正玄信号');

v = sqrt(0.1) * randn(1,L);

subplot(4,1,2);
plot(t(1:512),v(1:512));grid;
ylabel('幅度');
xlabel('时间');
title('原始噪声信号');

xn=s+v;

subplot(4,1,3);
plot(t(1:512),xn(1:512));grid;
ylabel('幅度');
xlabel('时间');
title('原始噪声+正玄信号');

%%%%%%%%%%%%%%%%%LMS%%%%%%%%%%%%%%%%%%%%%
k=128; %FIR滤波器系数
u =1/512;
 
 d =s;
 [y,w,e]=ADLMS(xn,d,k,u)
subplot(4,1,4);
plot(t(512:1024),y(512:1024));grid;
ylabel('幅度');
xlabel('时间');
title('自适应滤波后正玄+噪声信号');

%%
ss=s-y;%剩余噪声
figure(2);
subplot(2,1,1);
plot(t,ss);grid;
ylabel('幅度');
xlabel('时间');
title('剩余噪声');

%% 一小段三个信号比较
figure(3),
t=(20000:20500);
plot(t,y(20000:20500 ),'r',t,ss(20000:20500),'g',t,s(20000:20500),'b');
axis([20000,20500,-1,1]);
ylabel('幅度');
xlabel('时间');
legend('去噪后的正玄+噪声信号','剩余噪声','原始正玄信号');
title('一小段三个信号比较');
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA开源工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档