Understanding Adaptive Noise Cancellation
Adaptive Noise Cancellation (ANC)的用途是濾除雜訊以增強訊號, 常被應用在real time的系統上,例如抗噪耳機就是一個典型的應用。 ANC在使用上有一些限制,這些限制將會影響雜訊過濾的效果。 因此想利用ANC,就必須去了解這些限制,才能夠發揮出它的威力。
Introduction
來自感測器的訊號X會同時夾帶著乾淨的訊號`S`與雜訊`N`
`X = S + N`
直覺上,如果有辦法得到另一個訊號`y`單純只有雜訊
`y = N`
那麼,只要將X扣掉Y就可以得到S
`Z = X - y = (S + N) - N = S`
然而,事情總是無法如此美好,要得到跟`N`一模一樣的訊號是幾乎不可能的。 不過,ANC說,不知道N沒關係,只要你能給我一個跟`N`有關係的訊號`n`, 那麼我就能夠將`N`的影響降低。
Adaptive Noise Cancellation

ANC的系統架構如上圖,系統的Input有一個訊號源X以及一個雜訊參考源`n`, 其中`n`跟`N`有一個未知的關係存在。隨著訊號不斷輸入, adaptive filter會漸漸地找到n跟N之間的關係讓`y`近似`N`。假如很完美的`y`跟`N`一模一樣, 那麼ANC的輸出`Z = S + (N - y) = S`。
Adaptive filter聽起來像是在做回歸分析,但是不對啊,`N`不是未知的嗎, 怎麼有辦法去對一個未知的東西做近似呢? 事實上,ANC做了兩項假設, 讓它能夠在不知道`N`的情況下就能夠讓`y`近似`N`。
我們先對Z做一些分析:
`Z = S + (N - y)`
`Z^2 = S^2 + (N-y)^2 + 2S(N-y)`
`E[Z^2] = E[S^2] + E[(N-y)^2] + 2E[S(N-y)]`
ANC在這邊做了第一個假設: 訊號與雜訊是uncorrelated。
根據這個假設,我們可以把上面的式子改寫:
`E[Z^2] = E[S^2] + E[(N-y)^2] + 2E[S(N-y)]`
`\qquad\qquad\quad = E[S^2] + E[(N-y)^2] + 2E[S]E[(N-y)]`
此時,ANC做了第二個假設: 訊號的期望值為0 (`E[S] = 0`)。
所以可以把上面的式子化簡:
`E[Z^2] = E[S^2] + E[(N-y)^2]`
如果我們去最小化`E[Z^2]`
Min`{E[Z^2]} = `Min`{E[S^2] + E[(N-y)^2]}`
由於ANC系統調變的對象只有`y`,因此可以改寫成
Min`{E[Z^2]} = `Min`{E[(N-y)^2]}`
從最後的式子可以發現,最小值將發生在`N = y`的時候,此時
`Z = S + (N - y) = S`
好極了,雜訊完全被濾除。也就是說, 我們去最小化輸出端的能量,就等同於在最小化雜訊的能量。
Restrictions
ANC是一個很有用的工具,前提是能夠符合它的應用條件。 還記得我們在前面提到的兩項假設嗎:
- 訊號與雜訊是uncorrelated
- 訊號的期望值為0
當這兩項條件任何一項不符合的時候, 所謂的最小化輸出端的能量等同於在最小化雜訊的能量 這件事情就無法成立。在實際應用上, 要找到一個跟訊號完全uncorrelated的參考雜訊是最困難的事情, 這也是為什麼我們很少能夠用ANC將雜訊完全濾除。
Conclusion
總結來說,要讓ANC達到預期的效果,要注意以下兩件事情:
- 參考雜訊的雜訊純度越高,ANC的效果越好
- 把訊號的平均值弄到0