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