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