主頁 >  其他 > ANC主動降噪理論及Matlab代碼實作

ANC主動降噪理論及Matlab代碼實作

2020-09-29 15:06:55 其他

根據系統是否有參考信號傳感器可將ANC系統大致的分為前饋型和反饋型,

前饋控制是產生次級噪聲之前就通過傳感器測量初級噪聲的頻率以獲取參考信號,

反饋控制不需要測得參考信號就產生次級噪聲進行相消干涉

反饋型ANC系統 

反饋型 ANC 系統中沒有傳感器來測得參考輸入信號,僅通過誤差傳感器獲取經相消干涉后的殘余噪聲并將其送入到反饋控制器,進而達到調節次級聲源$y_n$的目的,使其發出與初級噪聲幅值相等相位相反的次級噪聲

  反饋型ANC系統避免了對初級噪聲的提取,也就不存在FM問題,反饋系統因具有一定的主動阻尼而可以有效抑制系統的暫態信號,但是反饋型系統魯棒性較差,且對寬帶噪聲的處理能力較差,一般適用于無法安裝參考信號傳感器的場景,

前饋型ANC系統

  前饋型ANC系統相較于反饋型增加了一個獲取參考信號的傳感器,誤差傳感器測得的殘余噪聲信號連同傳感器獲取的參考信號均作為控制器的輸入,參考信號可由聲學傳感器獲取,也可由非聲學傳感器(如轉速計、加速度計等)獲得,但聲學傳感器的引入容易造成聲反饋現象,從而削弱系統的魯棒性,故而窄帶 ANC 系統中的參考信號一般由非聲學傳感器采集,通過非聲學傳感器可采集到噪聲源信號的同步信號(如轉速、加速度等),按照一定的線性關系可將其轉換為頻率值,根據該頻率值可使信號發生器產生與窄帶噪聲頻率一致的參考信號,前饋型 ANC 系統的物理模型如圖 2.2 所示,

  其中,控制器以參考信號和殘余噪聲為輸入,產生并調節次級聲源信號$y_n$ ,驅動次級揚聲器發出次級噪聲,與初級聲源產生的噪聲進行相消干涉,最終使得誤差傳感器處的聲壓值最小,前饋型 ANC 系統具有很強的魯棒性,且不僅適用于窄帶噪聲信號,也可用于處理寬帶噪聲信號,

傳統ANC演算法

  噪聲信號隨時間的推移而不斷變化,其特性無法進行預先估計,這一性質導致噪聲很難被實時跟蹤,ANC 技術要求對時變的噪聲輸入信號進行跟蹤,從而調節控制器使產生的次級噪聲信號能最大的削弱噪聲輸入信號自適應數字信號處理可以很好的跟蹤時變信號,通過某種優化誤差準則不斷調整產生所需信號,而這種優化誤差準則實際上就屬于 ANC 演算法,

FXLMS演算法

ANC系統傳統演算法結構

  其中$W_n(z)$為自適應濾波器,$S(z)$次級通道;$p(n)$為初級噪聲;$e(n)$為系統殘余噪聲;x(n)為參考噪聲,最小均方誤差(Least Mean Square, LMS)演算法以最陡下降法為奠基石,具有較為出眾的迭代更新速度,應用非常廣泛,但在ANC系統中,次級通道$S(z)$的存在會導致殘余信號和參考信號間存在延時,進而削弱ANC系統的穩定性,

  Morgan 在 LMS 的基礎上提出了 FXLMS,在參考信號$x(n)$送入 LMS 演算法模塊前增加一個對次級通道傳遞函式的估計$S(z)$,從而解決次級通道所引起的相關延時問題,如圖 2.4 所示,FXLMS 演算法應用在 ANC 系統中簡單且有效,在 ANC 演算法中可謂歷久而彌新,得到了廣泛推廣,

FXLMS演算法結構

次級通道在線辨識

  在ANC系統中,通常將數模轉換(D\A)、信號方法電路、模數轉換(A\D)、濾波電路、揚聲器、傳聲器等電子設備以及揚聲器到傳聲器之間的實際管道等物理通道的組合稱之為次級通道,就實際應用而言,次級通道的傳遞函式顯然無法明確得知,而 ANC 系統中的自適應濾波器可對次級通道進行估計,當傳遞函式為時變函式時,采用在線辨識演算法,即在 ANC 系統運行的同時對次級通道進行估計,下圖給出了含在線辨識的 FXLMS 演算法結構,自適應濾波器的輸出$y_n$引入線辨識系統,作為LMS 演算法的輸入,同時將系統中的殘余噪聲信號與$y_n$經次級通道的估計之后得到的$\hat{y}_p(n)$相比較,將所得到的誤差也用作 LMS 演算法的激勵,調節引數,不斷逼近次級通道傳遞函式,完成對次級通道的實時在線辨識,

含在線辨識的 FXLMS 演算法結構

  次級通道的在線辨識應當滿足兩個基本要求:實作對次級通道較為精準的估計;同時在線辨識不應該對主降噪系統產生影響,而圖 2.5 所示的次級通道的在線辨識對$y(n)$進行直接處理,使得這兩個基本要求相互矛盾,故而實際的 ANC 系統應在在線辨識不被干擾與辨識不對主降噪系統產生干擾之間取得一個相對平衡,為在這兩者間獲取更為適宜的平衡點,Eriksson 提出增加輔助隨機噪聲作為在線辨識系統的激勵,而在主降噪系統中$y(n)$減去輔助噪聲之后再驅動揚聲器產生聲音信號進入次級通道,但輔助噪聲又對殘余噪聲造成了影響,Lan 在研究寬帶 ANC系統時提出了通過$|e(n)|$對輔助噪聲進行進一步的約束,劉在Lan 的基礎上針對窄帶前饋 ANC系統,改為利用$|e(n-1)|$對送入系統的輔助噪聲進行約束,如圖2.6 所示,本文所展開的在線辨識采用的正是該方法,

  次級通道的在線辨識可對時變次級通道傳遞函式進行估計,但同時增加了整個 ANC 系統的負擔,此外,輔助噪聲的存在仍在一定程度上削弱了 ANC 系統的魯棒性,

帶自激的在線辨識FXLMS演算法結構

次級通道離線辨識

  當次級通道環境不隨著時間而改變時,可以使用離線辨識演算法,離線辨識是運行 ANC 系統進行降噪之前針對次級通道預先進行訓練估計,固定并保存作為訓練結果的次級通道模型,再將該模型引入到 ANC 系統并啟動系統進行降噪,次級通道的離線辨識原理圖如圖 2.7 所示,

次級通道離線辨識原理圖

  其中,白噪聲信號$v(n)$作為系統在第n 時刻的激勵,此刻次級通道的輸出為$d(n)$,即離線辨識系統的期望信號,$y_v(n)$則是白噪聲激勵信號經過次級通道的估計函式$\hat{S}_n(z)$的輸出,$y_v(n)$與期望信號$d(n)$之差即為辨識誤差$e_o(n)$,送入到 LMS 演算法中,經過不斷迭代更新后當辨識誤差$e_o(n)$趨近于零時,$y_v(n)$與期望信號$d(n)$趨近于相同,則可知次級通道的估計函式$\hat{S}_n(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):真實的次級通道

$\hat{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                      % 離散時間 k
    Shx=[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                          % 離散時間 k
    Cx=[X(k) Cx(1:15)];            % 更新控制器狀態 
    Cy=sum(Cx.*Cw);                % 計算控制器輸出
    Sx=[Cy Sx(1:length(Sx)-1)];    % 傳播到secondary path
    e_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('噪聲信號', '控制信號')

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考文獻

窄帶主動噪聲控制系統實時仿真及硬體實作_毛夢菲

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/138796.html

標籤:其他

上一篇:劍指offer筆記面試題3----陣列中重復的數字

下一篇:演算法題--盛水最多的容器

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more