自适应滤波原理

在网上,看到一篇不错的自适应滤波原理讲解的文章,原文网址为:自适应滤波原理简介
全文包括:
1. 自适应滤波器简介
2. 自适应干扰抵消原理
3. 自适应滤波原理
4. 最小均方(LMS)算法
5. Matlab实现

一、自适应滤波器简介

自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成。如图所示。

在这里插入图片描述
输入信号x(n) 通过参数可调数字滤波器后产生输出信号 y(n),将其与期望信号d(n)进行比较,形成误差信号e(n), 通过自适应算法对滤波器参数进行调整,最终使 e(n)的均方值最小。自适应滤波可以利用前一时刻已得的滤波器参数的结果,自动调节当前时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节自身传输特性以达到最优的维纳滤波器。自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。维纳滤波器参数是固定的,适合于平稳随机信号。卡尔曼滤波器参数是时变的,适合于非平稳随机信号。然而,只有在信号和噪声的统计特性先验已知的情况下,这两种滤波技术才能获得最优滤波。在实际应用中,常常无法得到信号和噪声统计特性的先验知识。在这种情况下,自适应滤波技术能够获得极佳的滤波性能,因而具有很好的应用价值。
常用的自适应滤波技术有:最小均方(LMS)自适应滤波器、递推最小二乘(RLS)滤波器格型滤波器和无限冲激响应(IIR)滤波器等。这些自适应滤波技术的应用又包括:自适应噪声抵消、自适应谱线增强和陷波等。

二、 自适应干扰抵消原理

如图是自适应干扰抵消器的基本结构。其中期望响应d(n) 是信号与噪声之和,即d(n)=x(n)+N(n),自适应处理器的输入是与 相关的另一个噪声 。当x(n) 与N(n) 不相关时,利用噪声的相关性,自适应滤波器将调整自己的参数,以力图使y(n)成为N(n) 的最佳估计 。这样, e(n)将逼近信号x(n)。噪声N(n) 就得到一定程度的抵消。但若参考通道除检测到噪声N’(n) 外,还收到信号分量,则自适应滤波器的输出中将包含信号分量,从而使噪声对消效果变坏。因此,为获得良好的噪声对消性能,应使参考通道检测到的信号尽可能小,在信号不可测的噪声环境拾取参考输入信号。

三、自适应滤波原理


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、Matlab实现

程序借用自 LMS自适应滤波器
在这里插入图片描述


1
2
3
4
5
6
7
8
% 迭代计算
for k = M:itr                  % 第k次迭代
    x = xn(k:-1:k-M+1);        % 滤波器M个抽头的输入
    y = W(:,k-1).' * x;        % 滤波器的输出
    en(k) = dn(k) - y ;        % 第k次迭代的误差
    % 滤波器权值计算的迭代式
    W(:,k) = W(:,k-1) + 2*mu*en(k)*x;
end

LMSfilter.m

% 输入参数:
%     xn   输入的信号序列      (列向量)
%     dn   所期望的响应序列    (列向量)
%     M    滤波器的阶数        (标量)
%     mu   收敛因子(步长)      (标量)     要求大于0,小于xn的相关矩阵最大特征值的倒数   
% 输出参数:
%     W    滤波器的权值矩阵     (矩阵)
%          大小为M x itr,
%     en   误差序列(itr x 1)    (列向量) 
%     yn   实际输出序列         (列向量)
function [yn,W,en]=LMSfilter(xn,dn,M,mu)
itr = length(xn);
en = zeros(itr,1);             % 误差序列,en(k)表示第k次迭代时预期输出与实际输入的误差
W  = zeros(M,itr);             % 每一行代表一个加权参量,每一列代表-次迭代,初始为0
% 迭代计算
for k = M:itr                  % 第k次迭代
    x = xn(k:-1:k-M+1);        % 滤波器M个抽头的输入
    y = W(:,k-1).' * x;        % 滤波器的输出
    en(k) = dn(k) - y ;        % 第k次迭代的误差
    % 滤波器权值计算的迭代式
    W(:,k) = W(:,k-1) + 2*mu*en(k)*x;
end
% 求最优时滤波器的输出序列  r如果没有yn返回参数可以不要下面的
yn = inf * ones(size(xn)); % inf 是无穷大的意思
for k = M:length(xn)
    x = xn(k:-1:k-M+1);
    yn(k) = W(:,end).'* x;%用最后得到的最佳估计得到输出
end

主函数main,m设计
产生信号源,可以直接读取音频文件。

产生相关噪声,一个作为滤波输入,一个产生期望信号。

产生期望信号,信号源于噪声叠加产生含噪信号作为期望信号。

LMS滤波算法,调用LMSfilter.m函数。

绘制图形进行观察对比

clc;
clear all;
close all;
 
%% 产生信号源
[X,Fs] = audioread('voicefile.wav');
s = X(:,1); %取出双通道中其中一个通道作为信号源s
audiowrite('原始音频.wav',s,Fs); %创建原始音频.wav
n = length(s);
t=(0:n-1);
figure(1);
subplot(4,1,1);
plot(t,s);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('原始音频信号');
%% 产生均值为0方差为0.1的噪声信号
v = sqrt(0.1)*randn(n,1);
 
%% 产生AR模型的噪声
ar=[1,1/2];   %AR模型
v_ar=filter(1,ar,v);
% subplot(4,1,2);
% plot(t,v_ar);grid;
% ylabel('幅度');
% xlabel('时间');
% title('AR模型噪声信号');
 
%% 产生MA模型的噪声 是AR模型的相关噪声
ma=[1,-0.8,0.4,-0.2];  %MA模型
v_ma=filter(ma,1,v);
subplot(4,1,2);
plot(t,v_ma);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('相关噪声信号');
 
%% 产生期望信号
dn = s + v_ar;
audiowrite('含噪音频.wav',dn,Fs); %创建含噪音频
subplot(4,1,3);
plot(t,dn);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('含噪音频信号');
 
%% LMS滤波算法
M = 50;     %滤波器阶数M
mu = 0.0008;  %滤波器的步长
[ylms,W,elms] =LMSfilter(v_ma,dn,M,mu);
 
%% 绘制去噪后的语音信号
subplot(4,1,4);
plot(t,elms);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('去噪后的音频信号');
audiowrite('去噪音频.wav',elms,Fs);%保存去除噪声的音频
 
%%
e = s-elms;%剩余噪声
figure(2);
subplot(2,1,1);
plot(t,e);grid;
ylabel('幅度');
xlabel('时间');
title('剩余噪声');
 
%% 一小段三个信号比较
subplot(2,1,2);
t=(100000:100500);
plot(t,elms(100000:100500,1 ),'r',t,e(100000:100500,1),'g',t,s(100000:100500,1),'b');
axis([100000,100500,-1,1]);
ylabel('幅度');
xlabel('时间');
legend('去噪后的语音信号','剩余噪声','原始音频');
title('一小段三个信号比较');

3.结果分析
在这里插入图片描述
步长 μ=0.0001时
在这里插入图片描述
步长μ=0.0004时
在这里插入图片描述
步长μ=0.0012时
在这里插入图片描述
在这里插入图片描述
由于编辑公式用的不熟练和时间关系,部分内容用了截图,敬请谅解。该文主要是对自适应滤波原理的一个学习笔记。

  • 40
    点赞
  • 329
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值