• 【滤波器】最小均方(LMS)自适应滤波器


    一、自适应滤波器简介

    根据输入信号的时变统计特性,借助自适应算法实时地调整滤波器的参数和结构,这样的滤波器称为自适应滤波器。传统的IIR和FIR滤波器在处理输入信号时,其参数是预先设定好的,无法根据外界信号的随机变化来调整滤波系数,因而对随机信号的滤波效果较差;而自适应滤波器的系数可以自动连续地适应于输入信号,以获得最佳的期望响应。

    自适应滤波器常称为时变性的非线性系统,在实际应用过程中,它有两个阶段:一是学习训练阶段,滤波器根据所处理信号的特点,不断修正自身的滤波器系数,以使均方误差最小(Least Mean Square,LMS)。二是使用阶段,均方误差已经达到最小值,意味着滤波器的系数达到最优,此时的滤波器由非线性系统变为了线性系统。

    线性自适应滤波器由两部分组成:自适应滤波器的结构和自适应权值调整算法,其中滤波器的结构又分为IIR和FIR两种。

    二、LMS自适应滤波器

    1、原理概述

    在自适应滤波器设计中,最小均方(Least Mean Square,LMS)算法使用随机梯度下降的方法实现代价函数的最小化,具有计算复杂度低、无需统计数据的先验知识和均值无偏地收敛到维纳解等优点,成为自适应算法中应用最广泛的一种。LMS自适应滤波器本质上是一种将自身传输特性调节到最优的维纳滤波器。

    对于输入信号 x ( n ) x(n) x(n),其通过参数可调的横向滤波器后,输出为 y ( n ) y(n) y(n) ,LMS算法根据滤波器的输出信号 y ( n ) y(n) y(n) 与期望信号 d ( n ) d(n) d(n) 的误差自动地调整滤波器的参数,从而使得滤波器适应随机信号的时变统计特性,LMS自适应滤波器的结构如图1所示。

    2、计算步骤

    (1)设输入信号为向量 X ( n ) = [ x ( n ) , x ( n − 1 ) , . . . , x ( n − L ) ] T X(n)=[x(n),x(n-1),...,x(n-L)]^{T} X(n)=[x(n),x(n1),...,x(nL)]T,LMS自适应滤波器的输出为 y ( n ) y(n) y(n),则有:
    y ( n ) = ∑ i = 0 L w i x ( n − i ) = W T ( n ) X ( n ) y(n)=\sum_{i=0}^{L}w_{i}x(n-i)=W^{T}(n)X(n) y(n)=i=0Lwix(ni)=WT(n)X(n)
    式中, W ( n ) = [ w 0 ( n ) , w 1 ( n ) , . . . , w L ( n ) ] T W(n)=[w_{0}(n),w_{1}(n),...,w_{L}(n)]^{T} W(n)=[w0(n),w1(n),...,wL(n)]T,为滤波器的权系数,L为滤波器的阶数。
    (2)定义误差信号为 e ( n ) e(n) e(n),期望信号为 d ( n ) d(n) d(n) ,则有:
    e ( n ) = d ( n ) − y ( n ) = d ( n ) − W T ( n ) X ( n ) e(n)=d(n)-y(n)=d(n)-W^{T}(n)X(n) e(n)=d(n)y(n)=d(n)WT(n)X(n)
    (3)将误差信号 e ( n ) e(n) e(n)的均方值最小作为最优的统计准则,定义代价函数 J ( n ) J(n) J(n)
    J ( n ) = E [ e 2 ( n ) ] J(n)=E[e^{2}(n)] J(n)=E[e2(n)]
    J J J 随时间的变化表征了滤波器的收敛速度与收敛精度。当 J J J 取最小值时,滤波器的权系数可以达到最优。
    (4)利用最速下降算法,沿着性能曲面最速下降方向(负梯度方向) 调整滤波器权向量 W ( n ) W(n) W(n),搜索性能曲面的最小点 ,求解最优权向量 W o p t W_{opt} Wopt,可得到:
    ▽ J = ∂ ( e 2 ( n ) ) ∂ W ( n ) = − 2 e ( n ) X ( n ) ▽J=\frac{∂(e^{2}(n))}{∂W(n)}=-2e(n)X(n) J=W(n)(e2(n))=2e(n)X(n)
    则计算LMS自适应滤波器权向量的更新公式为:
    W ( n + 1 ) = W ( n ) + μ ( − ▽ J ) = W ( n ) + 2 μ e ( n ) X ( n ) W(n+1)=W(n)+μ(-▽J)=W(n)+2μe(n)X(n) W(n+1)=W(n)+μ(J)=W(n)+2μe(n)X(n)
    其中,μ>0,为步长因子。

    总结LMS自适应滤波算法的流程如下:

    y ( n ) = W T ( n ) X ( n ) y(n)=W^{T}(n)X(n) y(n)=WT(n)X(n) -------------------------------------------------------- (1)

    e ( n ) = d ( n ) − y ( n ) e(n)=d(n)-y(n) e(n)=d(n)y(n) --------------------------------------------------------- (2)

    W ( n + 1 ) = W ( n ) + 2 μ e ( n ) X ( n ) W(n+1)=W(n)+2μe(n)X(n) W(n+1)=W(n)+2μe(n)X(n) ----------------------------------- (3)

    3、算法参数分析

    (1)参数讨论

    算法中涉及的主要参数有权值更新步长μ、滤波器阶数L,这两个参数都对滤波性能起到一定的影响,在下一篇博客中介绍归一化LMS自适应滤波器时,将会详细讨论不同参数对滤波器性能的影响,并给出如何选择最优参数的方法。

    (2)算法的优缺点

    优点:结构简单 、计算量小 、鲁棒性强 、易于实现。
    缺点:LMS自适应滤波器的步长是固定的,在稳态误差和收敛速度上,这两者存在难以协调的矛盾 。较小的步长能获得很小的稳态误差,但是收敛速度比较慢;增大步长则可以提高滤波器的收敛速度,但会使得稳态误差变大。

    三、LMS应用于信号滤波

    1、MATLAB仿真代码

    主程序

    clc;
    clear;
    close all;
    
    %% 产生仿真信号
    fs = 1000;                  % 采样频率
    t = (0:1/fs:1-1/fs);        % 时间
    f = 10;                     % 信号频率
    x = sin(2*pi*f*t+pi/3);     % 原始信号
    y = awgn(x,15,'measured');  % 添加高斯白噪声后的信号
    %% LMS自适应滤波
    L = 20;     % 滤波器阶数
    Mu = 0.005;   % μ的范围为01
    xn = y;     % 输入信号
    dn = x;     % 期望信号
    [yn, W, en] = LMS(xn,dn,L,Mu);
    %% 画图
    figure;
    subplot(3,1,1);plot(t,x);xlabel('时间/s');ylabel('幅值');title('原始信号');
    subplot(3,1,2);plot(t,y);xlabel('时间/s');ylabel('幅值');title('LMS滤波器输入信号');
    subplot(3,1,3);plot(t,yn);xlabel('时间/s');ylabel('幅值');title('LMS滤波器输出信号');
    figure;plot(en);title('误差信号收敛情况');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    LMS自适应滤波器的实现函数

    function [yn, W, en] = LMS(xn, dn, M, mu)
    % 输入参数:
    %   xn   输入的信号,为一行序列
    %   dn   所期望的响应
    %   M    滤波器的阶数
    %   mu   收敛因子(步长)
    % 输出参数:
    %   W    滤波器系数矩阵  
    %   en   误差序列 
    %   yn   滤波器输出
    
    [m,n] = size(xn);
    if m>1  % 如果输入信号为一列,则进行转置
        xn = xn';
    end
    if m>1 && n>1
        fprintf('输入信号有误!请检查输入信号是否为一行序列');
    end
    
    itr = n;    % 迭代次数等于输入信号的长度
    en = zeros(1,itr);      % 初始化误差信号
    W  = zeros(M,itr);    % 初始化权值矩阵,每一列代表一次迭代
    
    % 迭代计算
    for k = M:itr                   % 第k次迭代
        x = xn(k:-1:k-M+1);         % 滤波器M个抽头的输入
        y = x*W(:,k-1);             % 滤波器的输出
        en(k) = dn(k)-y;            % 第k次迭代的误差
        W(:,k) = W(:,k-1)+2*mu*en(k)*x';     % 滤波器权值计算的迭代式
    end
    
    yn = inf * ones(size(xn));      % 初值为无穷大作为绘图使用,无穷大处不会绘图
    for k = M:n
        x = xn(k:-1:k-M+1);
        yn(k) = x*W(:,end);  % 最终输出结果
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    2、滤波效果

    图1
    在这里插入图片描述

    四、LMS自适应滤波器的应用领域

    (1)自适应均衡

    为了避免多途影响系统性能,采用自适应均衡技术,对接收信号进行自适应均衡补偿处理,使其尽可能接近期望信号,以消除码间干扰,解决传输环境不理想带来的失真问题。

    (2)语音处理

    不同环境噪声具有不同特性,需在已知语音信号频谱范围条件下,设计自适应滤波器,针对未知环境消除噪声干扰。基于 LMS算法的自适应滤波器在语音信号处理中,具有较好的收敛性和良好的环境适应性,并且稳态误差小,广泛应用于语音系统中。

    (3)自适应回声消除

    电话回声和声学回声是降低通信系统通话质量的主要原因。LMS算法的快速收敛特性,可保证语音系统的实时性,是其在回声消除领域有广泛的应用先决条件之一。通过对回声路径的自适应分析,结合语音信号的自适应处理,可以有效抑制回声,降低回声信号被察觉的可能性,实现即时语音回声自适应消除。

    (4)自适应干扰对消

    LMS 算法收敛速度快,稳定性高,结构简单等优势,使其在需要干扰对消的军事、医疗、科研生产等领域,均有广泛的应用,例如天线阵列旁瓣对消、雷达干扰对消、降低设备电源干扰等。

    五、参考文献

    [1] 杜建邦, 何金阳, 卓超. 基于最小均方自适应算法的光纤陀螺信号实时滤波方法[J]. 中国惯性技术学报, 2020, 28(06): 814-818+828.
    [2] 张红梅, 韩万刚. 一种新的变步长LMS自适应滤波算法研究及其应用[J]. 仪器仪表学报, 2015, 36(08): 1822-1830.
    [3]刘建涛, 席闯, 姜海洋. 基于LMS算法的自适应滤波器性能分析[J]. 舰船电子工程, 2021, 41(12): 36-39.

  • 相关阅读:
    数据仓库性能测试方法论与工具集
    Qt扫盲-QJsonDocument理论总结
    从零开始 Spring Boot 18:微信登录
    渗透测试流程之DVWA漏洞靶场部署
    Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
    第四章:Vue中的ajax
    首次建站用香港服务器有影响没?
    70.爬楼梯
    Dubbo 提供者与消费者的实现
    Linux安全加固
  • 原文地址:https://blog.csdn.net/weixin_45317919/article/details/125964702