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

news2024/10/5 14:01:49

文章目录

    • 1、变步长 SC-MPNLMS 频域分块算法
      • 1.1 算法原理
      • 1.2 算法代码
      • 1.3 算法优缺点
    • 2、集成多种自适应滤波算法的回声消除器
      • 1.1 算法原理
      • 1.2 算法代码
      • 1.3算法优缺点
      • 1.4 算法自适应准则
    • 3、新的变步长的LMS自适应滤波算法
      • 3.1算法原理
      • 3.2算法代码
      • 3.3算法优缺点
        • 参考文献

本文接上一篇博文,接下来介绍博主阅读论文总结的几种优化后的自适应滤波器更新算法!

1、变步长 SC-MPNLMS 频域分块算法

1.1 算法原理

  该算法由参考文献[1]提出,这种变步长 SC-MPNLMS 频域分块算法首先将远端输入信号分块处理,并对每个独立的块进行 FFT,而 FFT 是实现卷积和的快速运算,将远端输入信号与回声路径的卷积运算变换至频域内,在频域中实现滤波器权值向量的更新迭代,提升了算法的运算速度。在算法的自适应滤波阶段将频域内的信号进行快速傅里叶反变换(Inverse FFT,IFFT)使其变换至时域,并采用递归平均方法得到泄漏系数,从而调整全局步长因子矩阵,实现变步长 SC-MPNLMS 频域分块算法的自适应滤波过程。该算法改善了传统算法达到稳态值时大步长导致稳态失调过大的问题;针对频域分块自适应滤波算法初始收敛速度慢的问题,将滤波器初始权值赋值为稀疏度适中的随机序列。

在这里插入图片描述

  MPNLMS算法解决了PNLMS在估计过程中收敛速度不均的问题,实际上回声路径的稀疏程度是随着时间不断变化的,取决于温度,压力和反射率等因素[37,38],也随着封闭空间中的扬声器与麦克风的距离而变化。由于回声路径的稀疏程度对算法性能影响很大,SC-MPNLMS算法在自适应过程的每次迭代中计算出估计回声路径的稀疏程度,并将其融入MPNLMS算法,得到SC-MPNLMS算法的权值向量更新方程如下:

在这里插入图片描述

其中, μ \mu μ 为全局步长因子, x ( n ) x(n) x(n) 为远端输入信号,L为滤波器的长度, α \alpha α 为调整参数以防止出现被零整除的情况。 G ( n ) G(n) G(n) 为调整步长的对角矩阵,其具体计算方法可以参考文献一。

  变步长SC-MPNLMS频域分块算法的原理如下图所示。首先将输入信号分块,处理每个独立的块时权值系数不变,每个块的数据处理完后才对权值进行更新,降低了计算复杂度。在频域内结合估计回声与误差信号的LPS,采用递归平均得到最优步长因子,使权值系数每次迭代都具有最优步长,在保证稳态性能不降低的前提下,进一步提升了算法的收敛性能。

在这里插入图片描述

算法的具体公式推导也可以从文献中学习,最后变步长的SC-MPNLMS频域分块算法的权值更新迭代公式为:

在这里插入图片描述

1.2 算法代码

该算法针对最优步长的计算较为复杂,博主还未复现。如果有复现的童鞋,欢迎和博主分享学习,非常感谢!

1.3 算法优缺点

  该算法基于频域分块自适应算法[36],将不相关的远端输入信号分块处理,对每个独立的块依次进行频域内的自适应滤波,累加后作 FFT 反变换得到估计回声,将估计回声从期望信号中去除得到误差信号,根据回声对每个频点泄漏程度的不同,结合估计回声与误差信号的 LPS,用递归平均法调整全局步长因子矩阵,使算法初期拥有较大步长来提升收敛速度,后期拥有较小步长从而减小稳态误差,并对滤波器权值系数进行随机序列的非零值初始化,进一步改善了算法的初始收敛速度。当远端输入信号为不相关信号时,对于长度较长的回声路径,本章提出的改进算法在性能表现良好的情况下很大程度上节约了计算成本,使得 AEC 更具有实时性。

2、集成多种自适应滤波算法的回声消除器

1.1 算法原理

  该算法由参考文献[2]提出,其集成了多种自适应滤波器算法的回声消除框架。该算法是基于现代芯片技术的发展,芯片的运算速度得到大大提高而提出的,做法是选择多个各有优缺点且具有一定互补性的固定步长自适应算法,每种算法取多个不同的步长,分析同一时刻不同算法不同步长的误差,用帧误差能量最小的方法来选择该帧用哪一种算法,这样始终能选择—种输出误差最小的算法。该算法的问题是计算量比较大。

  算法的具体实现步骤是:选择LMS、NLMS、PNLMS和IPNLMS这四种具有一定互补性的固定步长自适应滤波算法,每种算法选择三个不同步长进行试验。这样就有12种算法,这12种算法同时进行。首先,计算出各个算法的误差,然后,计算每—帧的误差能量,比较得出最小帧误差能量,最后,将最小帧误差能量的误差作为输出。

在这里插入图片描述

1.2 算法代码

其实现原理就是将多种算法整合起来,每一帧处理后,都将多种算法中结果最好的输出出来。

1.3算法优缺点

  • 该算法集成了多种算法,因为多种算法各有特点并且互补,因此在不同场景下各种算法的效果也不同,但是肯定有一种算法效果最好。该算法就是应用了这一点,可以针对不同场景采用不同的自适应滤波器算法。
  • 该算法的缺点是,每次处理必须要同时计算多种算法的处理效果,计算量巨大。可以理解为用时间+空间换效果。

1.4 算法自适应准则

  文中介绍了两种自适应准则,自适应准则是基于最佳滤波器的设计提出来的,典型的最佳滤波器是维纳滤波器,自适应滤波器对于平稳信号收敛到维纳解。对于平稳的输入信号来说,自适应过程就是从某个初始状态出发求维纳解的过程。常用的自适应准则有两种::

  1. 均方误差(MSE)准则,该准则定义为自适应滤波器对期望信号进行估计的均方值,即期望信号与实际滤波器输出信号的差值的平方的期望值。

    在这里插入图片描述

    其中, d ( n ) d(n) d(n) 代表期望信号, y ( n ) y(n) y(n) 代表自适应滤波器的输出信号, w w w 代表滤波器的权系数矢量,x代表输入矢量。

  2. 最小平方(Ls)误差准则,该准则定义为期望信号与实际滤波输出信号的差值的平方和的平均值或者是加权平方和,即:在这里插入图片描述

式中, C n C_n Cn 为加权值,该准则的基础是误差的加权和最小。

3、新的变步长的LMS自适应滤波算法

3.1算法原理

   该算法是参考文献[3]中提出的,在介绍该算法之前,先介绍几种常用的变步长的LMS自适应滤波算法:

  • 基于对数函数的变步长LMS自适应滤波算法:根据上述动态选择步长参数值的标准,文献[4]提出了一种形式较为简单、计算复杂度低的基于对数函数的变步长LMS算 法,其将对数函数进行适当的改变作为步长参数模型决定步长参数值 μ \mu μ 的变化,使得步长参数的值随着误差 e ( n ) e(n) e(n) 的改变而发生动态的改变,步长调整公式为
    μ ( n ) = σ l o g [ ρ ∣ e ( n ) ∣ υ ] \mu(n) = \sigma log[\rho|e(n)|^\upsilon] μ(n)=σlog[ρe(n)υ]
    其中,参数 σ \sigma σ 的作用是控制步长参数模型的取值范围,参数 ρ \rho ρ 的作用是控制步长参数模型的形状,参数 υ \upsilon υ 的作用是控制步长参数模型邻近误差为 0 的区域的变换速率。经过文献[4]测试, σ = 0.02 , ρ = 1000 , υ = 2 \sigma = 0.02,\rho = 1000,\upsilon = 2 σ=0.02ρ=1000υ=2 时算法效果最好。

  • 基于正态分布函数的变步长LMS自适应滤波算法:文献[5]是在基于sigmoid函数的变步长LMS算法的基础上提出的,其步长参数调整公式为
    μ ( n ) = c { 1 − e x p [ − a ∣ e ( n ) ∣ b ] } \mu(n) = c\{1-exp[-a|e(n)|^b]\} μ(n)=c{1exp[ae(n)b]}
    其中,参数 a a a 控制步长参数模型收敛至最大取值的速度,参数 b b b 控制模型底部的形状,即进入稳态使其的步长参数模型的变化趋势,参数 c c c 控制步长参数模型的最大取值,经过文献[5]测试, a = 5 , b = 1 , c = 0.12 a=5,b=1,c= 0.12 a=5b=1c=0.12 时算法效果最好。

  参考文献[3]中提出的算法为了使LMS自适应滤波算法在收敛速度、稳态误差和系统跟踪性能等重要算法特征上得到更好的效果,在上面提出的第一种算法的基础上设计了一种新的步长参数变化模型,新的步长参数与误差之间的函数表达式为:
μ ( n ) = − γ l o g ( 1 1 + τ [ e ( n ) ] 2 ) \mu(n) = - \gamma log(\frac{1}{1+\tau[e(n)]^2}) μ(n)=γlog(1+τ[e(n)]21)
  参数 γ \gamma γ 的取值对于步长参数的取值范围有明显的影响;参数 τ \tau τ 对步长参数取值的范围和形状也就是变化趋势都有一定的影响,进而有可能降低算法的收敛速度以及精度。 根据参考文献中的测试,当 γ = 0.9 \gamma=0.9 γ=0.9 τ = 0.7 \tau = 0.7 τ=0.7 时,改进的变步长LMS自适应滤波器算法的步长参数模型最好。

改进后的LMS算法的具体步骤如下:

  1. 初始化参数。将自适应滤波器权系数的初始值 W ( 0 ) W(0) W(0) 设置为0,将自适应滤波器的阶数设置为M,选择合适的变化的步长值 μ \mu μ ,为了使算法收敛,步长 μ \mu μ 的取值应为:
    0 < μ < 1 / λ m a x 0<\mu<1/\lambda_{max} 0<μ<1/λmax
    其中 λ m a x \lambda_{max} λmax 表示输入信号 X ( n ) X(n) X(n) 的自相关矩阵的最大特征值。

  2. 计算滤波器的实际输出信号为 : y ( n ) = W T ( n ) X ( n ) y(n) = W^T(n) X(n) y(n)=WT(n)X(n)

  3. 计算自适应滤波器的误差为 : 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)

  4. 更新步长参数,步长参数更新公式为 μ ( n ) = − γ l o g ( 1 1 + τ [ e ( n ) ] 2 ) \mu(n) = - \gamma log(\frac{1}{1+\tau[e(n)]^2}) μ(n)=γlog(1+τ[e(n)]21)

  5. 更新滤波器权系数的值为: W ( n + 1 ) = W ( n ) + μ ( n ) X ( n ) e ( n ) W(n+1) = W(n) + \mu(n)X(n)e(n) W(n+1)=W(n)+μ(n)X(n)e(n)

重复上述步骤2~5,直到滤波器权系数逼近最佳滤波为止。

3.2算法代码

function[e,y,w] = NLMS(d,x,M)
    % 输入:
    % d  - 麦克风语音
    % x  - 远端语音
    % M  - 滤波器阶数
    %
    % 输出:
    % e - 近端语音估计
    % y - 远端回声估计
    % w - 滤波器参数
    d_length = length(d);
    if (d_length <= M)
        print('error: 信号长度小于滤波器阶数!');
        return; 
    end
    if (d_length ~= length(x))  
        print('error: 输入信号和参考信号长度不同!');
        return; 
    end
    
    xx = zeros(M,1);
    w1 = zeros(M,1);  %滤波器权重
    y = zeros(d_length,1); %近端语音
    e = zeros(d_length,1); %误差
    
    for n = 1:d_length
        %在输入信号x前补上M-1个0,使输出y与输入具有相同长度
        xx = [xx(2:M);x(n)]; %(39,1) +(1,1) = (40,1)
        y(n) = w1' *xx;
        mu = -0.9log(1/1+0.7*e(n)*e(n)); %步长,这里简化了mu的计算,没有防止x(n)过小的情况
        e(n) = d(n) - y(n);  %误差
        w1 = w1 + mu * e(n) * xx;
        w(:,n) = w1;
    end
end

3.3算法优缺点

  该算法在基于对数函数的变步长LMS算法的基础上,建立了一种新的步长参数与误差的关系模型。仿真结果表明,提出算法与已有算法相比,能够达到更高的收敛精度及更快的收敛速度,在系统不发生时变时,收敛精度分别提高了5dB和3dB,当系统发生时变后,收敛精度分别提高了4dB和2dB,不论系统是否发生时变,收敛速度都更快。

参考文献

[1]冯江浩. 基于自适应滤波的声学回声消除算法研究[D]. 太原理工大学.

[2]夏红根. 基于自适应滤波器的回声消除算法研究及应用[D]. 中国科学技术大学, 2009.

[3]张继荣, 张天. 一种改进的变步长LMS自适应滤波算法[J]. 西安邮电大学学报, 2021.

[4]茹国宝, 黄燕, 郭英杰,等. 基于对数函数的新变步长LMS算法[J]. 武汉大学学报:理学版, 2015(3):4.

[5]马凯, 王平波, 武彩. 一种基于正态分布曲线的变步长LMS算法[J]. 计算机仿真, 2019, 36(9):5.

作者:王小二_Leon
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
本文章不做任何商业用途,仅作为自学所用,文章后面会有参考链接,我可能会复制原作者的话,如果介意,我会修改或者删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

钉钉小程序入门3—钉钉扫码登录PC端网站

第一部分、准备材料&#x1f332; 公网环境 老版钉钉扫码中必须要配置一个域名才可以调试&#xff0c;新版支持IP配置调了。我是手机打开热点&#xff0c;电脑连接热点进行调试的&#xff0c;比老版要方便了不少。 查看本机IP地址方法&#xff1a; 如果使用的Windows&#xff…

MySQL高可用复制管理工具 —— Orchestrator使用

Orchestrator介绍 Orchestrator&#xff08;orch&#xff09;&#xff1a;go编写的MySQL高可用性和复制拓扑管理工具&#xff0c;支持复制拓扑结构的调整&#xff0c;自动故障转移和手动主从切换等。后端数据库用MySQL或SQLite存储元数据&#xff0c;并提供Web界面展示MySQL复…

docker学习笔记2(狂神)

Docker的常用命令 然后我们来学我们最重要的镜像命令&#xff1a; docker images 查看所有本地的主机上的镜像 docker search搜索镜像&#xff1a; docker pull下载镜像&#xff1a; docker pull 镜像名[:tag] 指定版本下载&#xff1a; docker rmi删除镜像&#xff1a; 批量…

[附源码]Python计算机毕业设计Django市场摊位管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

m基于遗传优化的不同等级电动汽车充电站的选址方案matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 作为电动汽车的普及与推广&#xff0c;必要的基础配套服务设施、充电站的建设位置和选址规划对整体行业的发展起着重要的意义&#xff0c;本文中提出了一个不同等级电动汽车充电站的选址与求解算…

Zebec联合Visa推出实体借记卡持续利好生态,$ZBC表现强劲

Zebec生态从今年年初开始&#xff0c;持续的释放利好提振市场信心。此前&#xff0c;Zebec曾以 10 亿美元的完全稀释估值筹集了 850 万美元&#xff0c;该轮融资投资者包括 Circle Ventures、Shima 和 Resolute等知名 Web3 投资机构。这是 Zebec Protocol 继今年年初获得 2800 …

计算机系统基本概念

1.计算机的硬件结构 早期的计算机没有很复杂的图形功能&#xff0c;CPU的核心频率也不高&#xff0c;跟内存的频率一样&#xff0c;它们都是直接连接在同一个总线&#xff08;Bus&#xff09; 上的。由于IO设备诸如显示设备、键盘、软盘和磁盘等速度与CPU和内存相比还是慢很多…

QT:布局管理器消息盒子对话框

让组件在水平和垂直方向对齐 有三种常用布局管理器&#xff1a; 水平&#xff0c;QHBoxLayout 垂直&#xff0c;QVBoxLayout 网格&#xff0c;QGridLayout(使布局好的界面嵌套到主窗口) 1.让组件大小固定 修改属性&#xff1a;minimusize&#xff0c;maxmumsize 最小和最大组件…

使用setuptools构建python包

python包分发方式 源码包分发&#xff1a; 源码包安装过程是先解压&#xff0c;再编译。最后才安装&#xff0c;所以其是跨平台的&#xff0c;由于每次安装都需要进行编译&#xff0c;相对于二进制包安装方式来说安装速度较慢。 解压——编译——安装 源码包本质上是一个压缩…

CDGA|2023年数据治理发展前景预测步骤

CDGA|2023年数据治理发展前景预测步骤 数据治理发展前景预测&#xff0c;就是在数据治理市场调查获得的各种信息和资料的基础上&#xff0c;运用科学的预测技术和方法&#xff0c;对影响数据治理市场供求变化的诸因素进行调查研究&#xff0c;分析和预见数据治理发展趋势&…

《解构领域驱动设计》读书笔记

文章目录书籍信息开篇软件复杂度剖析复杂系统理解能力预测能力领域驱动设计概览基本概念控制软件复杂度领域驱动设计统一过程现存的不足领域驱动设计统一过程全局分析问题空间探索全局分析的 5W 模型高效沟通高效协作商业模式画布业务流程图服务蓝图用例图事件风暴学习循环价值…

windows系统下mysql的主从复制

使用一台物理机实现mysql的主从复制功能。 准备&#xff1a; 1、操作系统&#xff1a;Windows Server 2016 Standard 2、下载mysql免安装包&#xff1a; https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.17-winx64.zip 安装maser 1、解压mysql压缩包&…

Windows下安装hadoop2.7.4

Windows下安装hadoop 案例环境 该压缩包是已经简化配置后的 hadoop2.7.4下载地址文件分享 (weiyun.com) 安装步骤 解压压缩包 配置环境变量 在系统变量中添加 在path中添加 拷贝hadoop2.7.4\bin\hadoop.dll到目录C:\Windows\System32 配置文件 把/etc/hadoop/ 下目录的相…

玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

前面一篇关于智能合约翻译文讲到了&#xff0c;是一种计算机程序&#xff0c;既然是程序&#xff0c;那就可以使用程序语言去编写智能合约了。 而若想玩区块链上的项目&#xff0c;大部分区块链项目都是开源的&#xff0c;能看得懂智能合约代码&#xff0c;或找出其中的漏洞&a…

管理RMAN备份_维护RMAN备份和仓库记录

1&#xff0e;RMAN备份和仓库维护概述 1.1&#xff0e;备份和仓库维护的目的 建议的维护策略是配置一个快速恢复区域&#xff0c;一个备份保留策略和一个归档 redo日志删除策略。在这种情况中&#xff0c;数据库按需要自动维护和删除备份与归档redo日志。然而&#xff0c;有时…

[附源码]Python计算机毕业设计Django水果管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

阿里P8专家爆出:入职阿里必备的598道java面试题,内含算法

前言 之前也给大家分享过很多的面试题和大佬的面试经验&#xff0c;相信大家也已经利用到了&#xff0c;也顺利找到了工作&#xff0c;并拿到了高薪。 今天就给大家分享阿里P8专家长期以来面试所问到的java面试题&#xff0c;总共有598道&#xff08;含算法&#xff09;&…

PCL 使用MLS 上采样

移动最小二乘法MLS&#xff08;Moving Lest Squares&#xff09;简要介绍_Figure 09的博客-CSDN博客_移动最小二乘法 深入理解移动最小二乘法曲面拟合代码&#xff08;MLS2D.m&#xff09;_残影丶的博客-CSDN博客_mls2d PCL 点云采样_Σίσυφος1900的博客-CSDN博客 上采样…

和数集团浅谈区块链技术如何赋能数字政务?

在“十四五”提高数字政府建设水平的大环境下,构建数字政务发展体系是国家治理现代化的必然选择。2021年是2035远景目标的开局之年&#xff0c;《十四五规划纲要》中明确将区块链列为“十四五”七大数字经济重点产业之一。数字政务的体系架构和创新机理,离不开新兴技术融合互通…

移动通信:分集技术(时间分集,频率分集,空间分集,SC,MRC,EGC)学习笔记

文章目录Micro diversityTime DiversityFrequency DiversitySpatial DiversityCombination of signalsSelection CombiningMaximal Ratio CombiningEqual Gain CombiningReferences分集技术是用来补偿衰落信道损耗的&#xff0c;它通常通过两个或更多的接收天线来实现。同均衡器…