根据系统是否有参考信号传感器可将ANC系统大致的分为前馈型和反馈型。

前馈控制是产生次级噪声之前就通过传感器测量初级噪声的频率以获取参考信号。

反馈控制不需要测得参考信号就产生次级噪声进行相消干涉

反馈型ANC系统 

反馈型 ANC 系统中没有传感器来测得参考输入信号,仅通过误差传感器获取经相消干涉后的残余噪声并将其送入到反馈控制器,进而达到调节次级声源ynyn的目的,使其发出与初级噪声幅值相等相位相反的次级噪声

  反馈型ANC系统避免了对初级噪声的提取,也就不存在FM问题,反馈系统因具有一定的主动阻尼而可以有效抑制系统的暂态信号。但是反馈型系统鲁棒性较差,且对宽带噪声的处理能力较差,一般适用于无法安装参考信号传感器的场景。

前馈型ANC系统

  前馈型ANC系统相较于反馈型增加了一个获取参考信号的传感器。误差传感器测得的残余噪声信号连同传感器获取的参考信号均作为控制器的输入。参考信号可由声学传感器获取,也可由非声学传感器(如转速计、加速度计等)获得。但声学传感器的引入容易造成声反馈现象,从而削弱系统的鲁棒性。故而窄带 ANC 系统中的参考信号一般由非声学传感器采集。通过非声学传感器可采集到噪声源信号的同步信号(如转速、加速度等),按照一定的线性关系可将其转换为频率值,根据该频率值可使信号发生器产生与窄带噪声频率一致的参考信号。前馈型 ANC 系统的物理模型如图 2.2 所示。

  其中,控制器以参考信号和残余噪声为输入,产生并调节次级声源信号ynyn ,驱动次级扬声器发出次级噪声,与初级声源产生的噪声进行相消干涉,最终使得误差传感器处的声压值最小。前馈型 ANC 系统具有很强的鲁棒性,且不仅适用于窄带噪声信号,也可用于处理宽带噪声信号。

传统ANC算法

  噪声信号随时间的推移而不断变化,其特性无法进行预先估计,这一性质导致噪声很难被实时跟踪。ANC 技术要求对时变的噪声输入信号进行跟踪,从而调节控制器使产生的次级噪声信号能最大的削弱噪声输入信号自适应数字信号处理可以很好的跟踪时变信号,通过某种优化误差准则不断调整产生所需信号。而这种优化误差准则实际上就属于 ANC 算法。

FXLMS算法

ANC系统传统算法结构

  其中Wn(z)Wn(z)为自适应滤波器,S(z)S(z)次级通道;p(n)p(n)为初级噪声;e(n)e(n)为系统残余噪声;x(n)为参考噪声。最小均方误差(Least Mean Square, LMS)算法以最陡下降法为奠基石,具有较为出众的迭代更新速度,应用非常广泛。但在ANC系统中,次级通道S(z)S(z)的存在会导致残余信号和参考信号间存在延时,进而削弱ANC系统的稳定性。

  Morgan 在 LMS 的基础上提出了 FXLMS,在参考信号x(n)x(n)送入 LMS 算法模块前增加一个对次级通道传递函数的估计S(z)S(z),从而解决次级通道所引起的相关延时问题,如图 2.4 所示。FXLMS 算法应用在 ANC 系统中简单且有效,在 ANC 算法中可谓历久而弥新,得到了广泛推广。

FXLMS算法结构

次级通道在线辨识

  在ANC系统中,通常将数模转换(D\A)、信号方法电路、模数转换(A\D)、滤波电路、扬声器、传声器等电子设备以及扬声器到传声器之间的实际管道等物理通道的组合称之为次级通道。就实际应用而言,次级通道的传递函数显然无法明确得知,而 ANC 系统中的自适应滤波器可对次级通道进行估计。当传递函数为时变函数时,采用在线辨识算法,即在 ANC 系统运行的同时对次级通道进行估计。下图给出了含在线辨识的 FXLMS 算法结构,自适应滤波器的输出ynyn引入线辨识系统,作为LMS 算法的输入。同时将系统中的残余噪声信号与ynyn经次级通道的估计之后得到的y^p(n)y^p(n)相比较,将所得到的误差也用作 LMS 算法的激励,调节参数,不断逼近次级通道传递函数,完成对次级通道的实时在线辨识。

含在线辨识的 FXLMS 算法结构

  次级通道的在线辨识应当满足两个基本要求:实现对次级通道较为精准的估计;同时在线辨识不应该对主降噪系统产生影响。而图 2.5 所示的次级通道的在线辨识对y(n)y(n)进行直接处理,使得这两个基本要求相互矛盾。故而实际的 ANC 系统应在在线辨识不被干扰与辨识不对主降噪系统产生干扰之间取得一个相对平衡。为在这两者间获取更为适宜的平衡点,Eriksson 提出增加辅助随机噪声作为在线辨识系统的激励,而在主降噪系统中y(n)y(n)减去辅助噪声之后再驱动扬声器产生声音信号进入次级通道。但辅助噪声又对残余噪声造成了影响,Lan 在研究宽带 ANC系统时提出了通过|e(n)||e(n)|对辅助噪声进行进一步的约束。刘在Lan 的基础上针对窄带前馈 ANC系统,改为利用|e(n−1)||e(n−1)|对送入系统的辅助噪声进行约束,如图2.6 所示。本文所展开的在线辨识采用的正是该方法。

  次级通道的在线辨识可对时变次级通道传递函数进行估计,但同时增加了整个 ANC 系统的负担,此外,辅助噪声的存在仍在一定程度上削弱了 ANC 系统的鲁棒性。

带自激的在线辨识FXLMS算法结构

次级通道离线辨识

  当次级通道环境不随着时间而改变时,可以使用离线辨识算法。离线辨识是运行 ANC 系统进行降噪之前针对次级通道预先进行训练估计,固定并保存作为训练结果的次级通道模型,再将该模型引入到 ANC 系统并启动系统进行降噪。次级通道的离线辨识原理图如图 2.7 所示。

次级通道离线辨识原理图

  其中,白噪声信号v(n)v(n)作为系统在第n 时刻的激励,此刻次级通道的输出为d(n)d(n),即离线辨识系统的期望信号。yv(n)yv(n)则是白噪声激励信号经过次级通道的估计函数S^n(z)S^n(z)的输出,yv(n)yv(n)与期望信号d(n)d(n)之差即为辨识误差eo(n)eo(n),送入到 LMS 算法中。经过不断迭代更新后当辨识误差eo(n)eo(n)趋近于零时,yv(n)yv(n)与期望信号d(n)d(n)趋近于相同,则可知次级通道的估计函数S^n(z)S^n(z)趋近于次级通道S(z)S(z),实现了对次级通道的离线辨识。

  离线辨识是脱离 ANC 降噪系统,独立进行系统辨识,不会给 ANC 降噪系统增加运行负担,同样不会损害 ANC 降噪系统的鲁棒性。若 ANC 系统的次级通道传递函数时不变,则离线辨识具有一定的优势,在本文后期具体实验时会给出更为直观的说明。

FM 问题及非平稳

  在前馈型 ANC 系统中,对参考信号的提取采用非声学传感器时,若传感器长时间工作将会累积损耗最终致使精度减削,采集到的参考信号频率将与实际初级噪声的频率存在误差。又或者,当信号发生器发出的信号不够精确,与期望存在误差。这些情况最终导致参考信号频率与实际噪声频率间存在误差,即所谓的 FM。

  FM 问题对窄带前馈 ANC 具有致命性的影响力。哪怕系统中仅存在 1%的 FM 量,也将导致系统无法进行有效消噪。本文将在第三章和第六章分别从实时仿真以及实际实验两方面分析说明 FM 问题。

  另外,噪声源设备的速度变化将直接表现为初级噪声信号频率的变化,而频率不稳定的初级噪声对系统的鲁棒性及跟踪能力有着毁坏性的损伤。非平稳一直是存在于实际的 ANC 应用中不可避免的又一问题,当初级噪声表现出非平稳时,采集参考信号的传感器会有响应延时并最终引起非平稳的 FM。在本文的第三章将对非平稳的 FM 进行仿真分析。

本章小结

  本章对 ANC 技术的理论基础进行了详细介绍。首先,针对 ANC 系统分别从反馈型和前馈型两种类型对 ANC 系统类型进行概要描述。其次,详细描述了传统 ANC 算法,对 FXLMS 算法的基础 LMS 略有介绍,重点以 FXLMS 算法展开论述,继而详解了次级通道的在线辨识与离线辨识,并对在线辨识与离线辨识的应用场景进行了简要说明。最后,针对存在于前馈型 ANC系统中的 FM 及非平稳问题进行简要说明。

代码实现

x(n):参考信号

u(n):控制信号

d(n):期望信号

y(n):输出信号

r(n):x滤波后的信号

e(n):误差信号

W(z):自适应滤波器

G(z):真实的次级通道

G^(z)G^(z):估计的次级通道

%              +-----------+                       +
% x(k) ---+--->|   P(z)    |--yp(k)----------------> sum --+---> e(k)
%         |    +-----------+                          ^-   |
%         |                                           |    |
%         |        \                                ys(k)  |
%         |    +-----------+          +-----------+   |    |
%         +--->|   C(z)    |--yw(k)-->|   S(z)    |---+    |
%         |    +-----------+          +-----------+        |
%         |            \                                   |
%         |             \----------------\                 |
%         |                               \                |
%         |    +-----------+          +-----------+        |
%         +--->|   Sh(z)   |--xs(k)-->|    LMS    |<-------+
%              +-----------+          +-----------+        % LMS最小均方误差
% S(z)次级通道传递函数      % ys(k)次级声源
% P(z)主通道传递函数        % yp(k)初级声源
% C(z)控制器               % yw(k)控制器
% Sh(z)传感器函数          % xs(k)传感器参考信号clear
T=1000; % 仿真持续时间% 我们不知道p(z)和S(z),所以我们必须建立dummy虚拟路径
Pw=[0.01 0.25 0.5 1 0.5 0.25 0.01];
Sw=Pw*0.25;x_iden=randn(1,T); % 产生shape=(1,1000)的白噪声信号估计S(z)% 送至actuator执行,在传感器位置测量,
y_iden=filter(Sw, 1, x_iden);% 然后,开始识别过程
Shx=zeros(1,16);       % 传感器Sh(z)的状态
Shw=zeros(1,16);       % 传感器Sh(z)的权重
e_iden=zeros(1,  T);   % 识别错误的数据缓冲区%LMS 算法
% [Shy,Shw]=lms(Shx,y_iden,x_iden,Shw,e_iden,T);
mu=0.1;                         % 学习率
for k=1:T                      % 离散时间 kShx=[x_iden(k) Shx(1:15)];  % 更新传感器的状态Shy=sum(Shx.*Shw);            % 计算传感器Sh(z)的输出e_iden(k)=y_iden(k)-Shy;    % 计算误差     Shw=Shw+mu*e_iden(k)*Shx;   % 调整权重
end% 检查结果
subplot(2,1,1)
plot((1:T), e_iden)
ylabel('Amplitude');
xlabel('Discrete time k');
legend('Identification error');
subplot(2,1,2)
stem(Sw)
hold on
stem(Shw, 'r*')
ylabel('Amplitude');
xlabel('Numbering of filter tap');
legend('S(z)系数', 'Sh(z)系数')% 第second task二个任务是主动控制
X=randn(1,T);% 测量传感器位置接收的噪声,
Yd=filter(Pw, 1, X);% 启动系统
Cx=zeros(1,16);       % C(z)的状态
Cw=zeros(1,16);       % C(z)的权重
Sx=zeros(size(Sw));   % secondary次路径的虚拟状态
e_cont=zeros(1,T);    % 控制错误的数据缓冲区
Xhx=zeros(1,16);      % 过滤后x(k)的状态% FxLMS 算法
% [Cy,Cw]=FxLMS(X,Cx,Cw,Sx,Sw,Shx,Shw,e_cont,Xhx,T,Yd);
mu=0.1;                            % 学习率
for k=1:T                          % 离散时间 kCx=[X(k) Cx(1:15)];            % 更新控制器状态 Cy=sum(Cx.*Cw);                % 计算控制器输出Sx=[Cy Sx(1:length(Sx)-1)];    % 传播到secondary pathe_cont(k)=Yd(k)-sum(Sx.*Sw);   % 测量残差Shx=[X(k) Shx(1:15)];          % 更新Sh(z)的状态Xhx=[sum(Shx.*Shw) Xhx(1:15)]; % 计算过滤后的x(k)Cw=Cw+mu*e_cont(k)*Xhx;        % 调整controller的权重
end% 结果
figure
subplot(2,1,1)
plot((1:T), e_cont)
ylabel('Amplitude');
xlabel('Discrete time k');
legend('Noise residue')
subplot(2,1,2)
plot((1:T), Yd)
hold on
plot((1:T), Yd-e_cont, 'r:')
ylabel('Amplitude');
xlabel('Discrete time k');
legend('噪声信号', '控制信号')

参考文献

窄带主动噪声控制系统实时仿真及硬件实现_毛梦菲

ANC主动降噪理论及Matlab代码实现相关推荐

  1. lms语音降噪matlab实现_ANC主动降噪理论及Matlab代码实现

    根据系统是否有参考信号传感器可将ANC系统大致的分为前馈型和反馈型. 前馈控制是产生次级噪声之前就通过传感器测量初级噪声的频率以获取参考信号. 反馈控制不需要测得参考信号就产生次级噪声进行相消干涉 反 ...

  2. WOA基本理论及MATLAB代码

    鲸鱼优化算法(WOA) 1.前言: 一种元启发式优化算法,模拟座头鲸狩猎行为的元启发式优化算法.目前的工作与其他群优化算法相比的主要区别在于,采用随机或最佳搜索代理来模拟捕猎行为,并使用螺旋来模拟座头 ...

  3. ANC主动降噪,FFT方案与FxLMS方案比较

    ANC主动降噪,FFT方案与FxLMS方案比较 ANC方案比较 ANC原理 编程环境 FFT降噪原理 FFT降噪缺陷 FxLMS原理 ANC方案比较 先说我的结论,FFT方案相对简单易懂,适合初学降噪 ...

  4. 基于LMS及FxLMS算法的ANC主动降噪仿真分析

    ANC主动降噪原理 仿真模型 仿真结果 权重收敛过程  模型获取:置顶文章底部获取方式

  5. QCC3040/QCC3046 ANC(主动降噪)调测

    QCC3040/QCC3046 ANC(主动降噪)调测 概述 基于最新CS-R00128.1的earbud工程,软件端配置ANC,以进行调测 软件配置 1.需要打开的宏:ENABLE_ANC 2.用默 ...

  6. 系统辨识理论及MATLAB仿真——学习笔记(1)

    系统辨识理论及MATLAB仿真学习笔记(1) 前言 目录 第1章 绪论 1.1 建立数学模型的基本方法 1.2 系统辨识的定义 1.3 系统辨识的研究目的 1.4 数学模型的分类 1.5 几种常见的数 ...

  7. matlab做copula,Copula理论及MATLAB应用实例

    Copula理论及MATLAB应用实例 %-------------------------------------------------------------------------- % Co ...

  8. 单相桥式半控整流matlab仿真,三相桥式半控整流电路理论及MATLAB仿真实现.doc

    三相桥式半控整流电路理论及MATLAB仿真实现.doc 三相桥式半控整流电路整流电路是电力电子技术中最为重要,也是应用得最为广泛的电路,不仅应用于一般工业领域,也广泛应用于交通运输.电力系统.通信系统 ...

  9. matlab传递函数参数辨识,5.2 传递函数的频域辨识 系统辨识理论及Matlab仿真课件.ppt...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp习题/试题 5.2 传递函数的频域辨识 系统辨识理论及Matl ...

  10. 转载_Feedforward ANC 主动降噪原理

    概述 ANC指Active Noise Control,主动降噪.基本原理是降噪系统产生与外界噪音相等的反向声波,将噪音中和.图1是feedforward式主动降噪耳机的示意图.ANC芯片放置在耳机内 ...

最新文章

  1. 带卷积核二分类网络的输出是不是有方向的?
  2. 一文看尽7篇目标跟踪最新论文(ABCTracker/MAST/L1DPF-M等)
  3. java常用技术名词解析
  4. C语言试题七之将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。
  5. 栈结构的总结【数据结构F】
  6. MySQL用户如何构建实时数仓
  7. java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用
  8. 95-290-050-源码-内存管理-堆外内存与堆内内存概述
  9. hadoop集群配置文件
  10. mathematic语法基础
  11. RS纠删码性能分析实战
  12. 记录VS在线安装下载慢的解决
  13. 第一次用vc写的文件切割小软件_CutFile
  14. K210基础实验—获取,修改像素值
  15. selenium基础②:模拟QQ空间登录
  16. php模板开发教程,discuz模板开发教程系列教程整理
  17. 【12306购票】测试运行以及完整代码
  18. 计算机网络互连基础技术及实战
  19. LRU算法模拟器(基于Java和VUE前端实现)
  20. k8s篇-Pod健康检测

热门文章

  1. z反变换计算机控制,计算机控制4.Z变换.ppt
  2. DCDC中自举电容的原理小结(一)
  3. chrome插件离线安装包(.crx)下载
  4. 如何对多个文件夹进行重命名?这个方法可以批量修改文件夹名、给文件夹名加统一前缀或后缀
  5. 1.数字芯片后端设计小概述
  6. UI设计和原型设计的区别
  7. MD5,SHA1,SHA256,NTLM,LM等Hash在线破解网站收集
  8. Teach Yourself Programming in Ten Years
  9. c#语言絢止函数是,取汉子拼音首字母的C#和VB.Net方法
  10. 如何删除WORD中的空白行