在我們周圍有著各種各樣的模擬信號,比如,電流,電磁波,溫度,聲音等等。作為計算機系統(tǒng)來說,它只認(rèn)識0和1,意味著它只能處理數(shù)字信息,但是,它是如何處理我們周圍的這些模擬信號的呢?要理解這個問題,我們需要理解在數(shù)字信號處理領(lǐng)域中一個非常重要的定理——采樣定理,它是模擬信號數(shù)字信號之間的一個基本橋梁,本文將和大家一起學(xué)習(xí)奈奎斯特-香農(nóng)采樣定理。
采樣定理1928年由美國電信工程師奈奎斯特首先提出來的,因此稱為奈奎斯特采樣定理。1933年由蘇聯(lián)工程師科捷利尼科夫首次用公式嚴(yán)格地表述這一定理,因此在蘇聯(lián)文獻中稱為科捷利尼科夫采樣定理。1948年信息論的創(chuàng)始人香農(nóng)對這一定理加以明確地說明并正式作為定理引用,因此在許多文獻中又稱為香農(nóng)采樣定理。
我們先來看下面一個例子,對于一個正弦信號:
如果我們分別以0.5,0.25,0.1,0.01的間隔取點,然后再將每個點用直線連接起來。
從上面的圖中可以發(fā)現(xiàn),時間間隔越小,記錄這個信號的點數(shù)也多,信號還原的就越精確。顯然,我們不可能無限多的點數(shù)去記錄這個信號,如何才能準(zhǔn)確的表達信號,又能合理的使用計算機資源?
其實大佬們早就有研究,就是我們今天要學(xué)習(xí)的奈奎斯特-香農(nóng)采樣定理。
采樣頻率要大于信號最高頻率的2倍,才能無失真的保留信號的完整信息。
即:
這里,我們將這個信號頻率(這個臨界點)叫做奈奎斯特頻率。下面我們不妨先通過一個實驗來理解這個定理,假如有下面這樣一個信號:
令f=5 Hz, 再分別依次以5Hz,10Hz,20Hz,40Hz,100Hz的采樣率進行采樣,觀察不同采樣率情況下時域和頻域的信號還原情況,老規(guī)矩先上代碼。
import numpy as np
import matplotlib.pyplot as plt
def signalCreate(_fs, _N, _f0):
fs = _fs # 采樣率
N = _N # 數(shù)據(jù)點數(shù)
f0 = _f0
n = np.linspace(0, N-1, N)
t = n / fs
yt = np.exp(1j*2*np.pi*f0*t)
f = n * fs / N - fs/2
yf = np.fft.fftshift(np.fft.fft(yt))
return t, yt, f, yf
t, yt, f, yf = signalCreate(5, 128, 5)
plt.subplot(5, 2, 1)
plt.plot(t, yt)
plt.subplot(5, 2, 2)
plt.plot(f, np.abs(yf))
t, yt, f, yf = signalCreate(10, 128, 5)
plt.subplot(5, 2, 3)
plt.plot(t, yt)
plt.subplot(5, 2, 4)
plt.plot(f, np.abs(yf))
t, yt, f, yf = signalCreate(20, 128, 5)
plt.subplot(5, 2, 5)
plt.plot(t, yt)
plt.subplot(5, 2, 6)
plt.plot(f, np.abs(yf))
t, yt, f, yf = signalCreate(40, 128, 5)
plt.subplot(5, 2, 7)
plt.plot(t, yt)
plt.subplot(5, 2, 8)
plt.plot(f, np.abs(yf))
t, yt, f, yf = signalCreate(100, 128, 5)
plt.subplot(5, 2, 9)
plt.plot(t, yt)
plt.subplot(5, 2, 10)
plt.plot(f, np.abs(yf))
plt.show()
結(jié)果如下圖,左邊是時域右邊是頻域。當(dāng)采樣頻率是5Hz時,還原出來的信號是一個頻率為0的直流信號,顯然,這里當(dāng)采樣頻率小于信號頻率的兩倍時是無法準(zhǔn)確還原原信號的;當(dāng)采樣頻率是10Hz時,還原出來的信號似乎也還是有些不對的地方,在頻域上很明顯信號不能完整的顯示出來;當(dāng)采樣頻率是20Hz時,不管是時域還是頻域還原出來信號都已經(jīng)很接近原始信號了;當(dāng)然我們繼續(xù)增加采樣頻率,當(dāng)采樣頻率是40Hz和100Hz時,還原出的信號更加接近真實信號了。
不同采樣率采樣
不過,我們對比采樣頻率40Hz和100Hz的頻域圖形可以發(fā)現(xiàn),100Hz的明顯要“胖”一些。這是因為頻率分辨率變大了,采樣點數(shù)不變,采樣分辨率隨著采樣頻域增加而增加,采樣分辨率可以用下面的公式計算:
顯然,采樣頻率如果太低就不能正確還原真實信號;但是如果采樣頻率太高,會有較大的頻率分辨率,同時又會有產(chǎn)生大量的數(shù)據(jù)。通常,在實際應(yīng)用中采樣頻率會選擇比兩倍奈奎斯特頻率要大一些(比如3~5倍)。
另外,在采樣的過程中,對比采樣頻率和奈奎斯特頻率大小關(guān)系,我們還可以這樣來描述:
- 采樣頻率高于兩倍奈奎斯特頻率,這種采樣被稱為過采樣;
- 采樣頻率低于兩倍奈奎斯特頻率,這種采樣被稱為欠采樣。