Language

Tuesday, December 4, 2012

平均同步訊號的意義 - 如何處理雜訊


這個世界上的事情基本上是不可預測的, 在訊號處理上, 我們把不能夠預測的部份都當作是雜訊來看待, 然後用統計的觀點來看我們想要的訊號。



在這篇文章裡, 筆者會介紹對待雜訊最基本的工具: 平均, 以及在平均這個運算上, 我們能夠得到什麼樣的好處, 也就是能夠得到多少增益(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.00000.30900.58780.80900.95111.00000.95110.80900.58780.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.00000.30900.58780.80900.95111.00000.95110.80900.58780.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 是因為這是振幅。



把之前的平均次數能夠得到的增益做成表格, 如下所示:















NGain(dB)
10
23.01
1612.04
102430.10
409636.12
6553648.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: