這個世界上的事情基本上是不可預測的, 在訊號處理上, 我們把不能夠預測的部份都當作是雜訊來看待, 然後用統計的觀點來看我們想要的訊號。
在這篇文章裡, 筆者會介紹對待雜訊最基本的工具: 平均, 以及在平均這個運算上, 我們能夠得到什麼樣的好處, 也就是能夠得到多少增益(gain), 這樣我們就知道需要花多少次的平均能夠得到我們想要的結果。為了比較容易說明平均, 在這篇文章裡, 筆者只先專注在同步訊號的平均, 而這也是示波器的基本原理之一。
同步平均 (Coherent Averaging)
訊號有分非週期性與週期性序號, 要能夠同步, 必須是週期訊號, 所以像語音訊號這種非週期訊號, 我們就先不討論。週期訊號裡面, 又以正弦波在頻域上最單純, 所以我們先來看一段正弦波。這是週期為 20 的正弦波, 圖上總共兩個週期:
From SignalAveraging |
我們把上述的數位訊號表列如下:
X(0) | X(1) | X(2) | X(3) | X(4) | X(5) | X(6) | X(7) | X(8) | X(9) |
---|---|---|---|---|---|---|---|---|---|
0.0000 | 0.3090 | 0.5878 | 0.8090 | 0.9511 | 1.0000 | 0.9511 | 0.8090 | 0.5878 | 0.3090 |
X(10) | X(11) | X(12) | X(13) | X(14) | X(15) | X(16) | X(17) | X(18) | X(19) |
0.0000 | -0.3090 | -0.5878 | -0.8090 | -0.9511 | -1.0000 | -0.9511 | -0.8090 | -0.5878 | -0.3090 |
X(20) | X(21) | X(22) | X(23) | X(24) | X(25) | X(26) | X(27) | X(28) | X(29) |
-0.0000 | 0.3090 | 0.5878 | 0.8090 | 0.9511 | 1.0000 | 0.9511 | 0.8090 | 0.5878 | 0.3090 |
X(30) | X(31) | X(32) | X(33) | X(34) | X(35) | X(36) | X(37) | X(38) | X(39) |
0.0000 | -0.3090 | -0.5878 | -0.8090 | -0.9511 | -1.0000 | -0.9511 | -0.8090 | -0.5878 | -0.3090 |
那麼平均這兩個週期的正弦波(週期為 20) 的動作就是:
Xavg(0) = X(0)+X(20)
Xavg(1) = X(1)+X(21)
…
Xavg(19) = X(19)+X(19+20)
最後 Xavg(0:19) 就會是平均後的正弦波, 如果以 N 來代表取平均的週期數, 而週期以 T 來帶進去, 那麼我們的運算式子會變成:
Xavg(i) = ( X(i) + X(i+T) + X(i+2*T) + … + X(i+(N-1)*T) ) / N, i = 0..T-1
上述的訊號還是相當的純淨沒有雜質, 看不出平均的意義, 接下來我們來看加入雜訊之後的樣子, 我們假設雜訊是 WGN(White Gaussian Noise), 意思是這些雜訊的振幅符合 Gaussian 分布, 而雜訊彼此之間沒有關聯, 白色表示頻譜一致分布在頻域上。
我們讓訊雜比是 0 dB, 意思是雜訊跟訊號的功率是一樣的, 訊號加雜訊會如下圖所示, 圖中的 N 代表平均的週期數:
From SignalAveraging |
如果我們平均 2 個週期, 看起來還是跟 N=1 時差不多:
From SignalAveraging |
如果我們平均 16 個週期, 稍微好一點點了:
From SignalAveraging |
如果我們平均 1024 個週期, 喔, 已經開始有蠻漂亮的訊號形狀了:
From SignalAveraging |
如果我們平均 4096 個週期, 哇, 訊號又更明顯了:
From SignalAveraging |
如果我們平均 65536 個週期, 這個已經幾乎就跟沒有雜訊一樣了, 我們很少有機會能平均這麼多次, 放在這裡是要讓讀者明白平均的威力:
From SignalAveraging |
我們把原來的純淨訊號與 N=65536 平均後的訊號放在一起看:
From SignalAveraging |
From SignalAveraging |
所以從上述幾張圖一路看下來, 很明顯的平均同步訊號能夠讓訊號浮現而雜訊變小, 用訊號處理的術語就是有增益(gain), 那麼我們從平均能夠得到的增益是多少呢?接下來我們來仔細算一下。
增益
假設我們想要得到的常數訊號振幅是 A, 而雜訊是 N(n) 那麼我們接收到的訊號 r(n) = A + N(n), 在統計上, 我們可以把 A 當作是這個 distribution 的平均值。雜訊的振幅, 亦即 r(n) 的標準差是 sigmain。
在雜訊本身的 distribution 不變的情況下, 取 N 個取樣做平均之後, 其標準差會變成:
sigmaavg = sigmain / sqrt(N), 亦即平均 N 次之後的標準差為原來的標準差除以根號 N。
原來的訊雜比 SNRin = A / sigmain
平均後的訊雜比 SNRavg = A / sigmaavg
Gain = SNRavg / SNRin = sigmain / sigmaavg = sqrt(N)
把增益用分貝表示: Gain = 20*log10(sqrt(N)) = 10*log10(N) dB, 第一個 log10 乘以 20 是因為這是振幅。
把之前的平均次數能夠得到的增益做成表格, 如下所示:
N | Gain(dB) |
---|---|
1 | 0 |
2 | 3.01 |
16 | 12.04 |
1024 | 30.10 |
4096 | 36.12 |
65536 | 48.16 |
結語
只要在現實生活中處理訊號, 免不了的就是要處理雜訊, 這是痛苦的地方, 也是這個世界迷人有趣的地方。如何與雜訊共存, 或是把雜訊對我們的影響變小, 是我們每一個要處理訊號的工程師必須要面對的問題。在這篇文章中, 我們了解到了在訊號同步的情況之下, 如何透過同步平均(coherent averaging) 來改善訊雜比, 使我們要得到的訊號「浮出水面」, 以及要作多少次平均可以得到多少增益, 將來各位如果遇到需要處理訊號的時候, 有最基本但也非常有用的工具可以把雜訊消除。
參考書目
Sheldon Ross, "A First Course in Probability," 6/e, Prentice-Hall, 2002.
Richard G. Lyons, "Understandding Digital Signal Processing," 3/e, Prentice-Hall, 2011.
--
Albert Huang
Chun-Chieh Huang(黃俊傑)
No comments:
Post a Comment