-
問題重述
DSP課程實驗
- 計算機模擬產生多頻率信號:
- 編寫通用的FFT子程序
- 設置參數,對信號進行頻譜分析
- 對信號分別以滿足和不滿足奈奎斯特採樣定理的採樣率進行採樣,觀察其頻譜變化
- 設計低通、高通、帶通和帶阻濾波器,對多頻率信號進行濾波處理
- 撰寫實驗報告,內容包括實驗步驟、流程圖、源程序、設置參數、輸出結果(圖)、結果分析(結合原理)
例如:模擬信號:
用一個FFT處理器對其進行頻譜分析,要求能分辨所有的頻率分量,則
- 1)最小信號記錄長度應爲多少?
- 2)採樣頻率至少爲多少?
- 3)若採樣頻率爲100Hz,則採樣點數應取幾點;
- 4)若採樣頻率爲50Hz,則頻譜分析得到的信號頻率分量有哪些?是否與信號實際頻率分量一致?爲什麼?
-
實驗目的
- 實驗所需知識覆蓋離散傅里葉變換、數字濾波器設計、信號抽取與插值恢復、奈奎斯特定理等內容,通過實驗加深對DSP課程內容的理解,鞏固所學知識。
- 學會利用計算機編寫通用FFT程序,對連續信號頻譜波形進行分析。
- 學會應用DFT分析數字信號處理中常見問題及探尋解決方法。
- 熟悉高級程序語言的使用方法,包括常見函數的使用,圖形繪製,多種庫的調用和參數的調節。
- 增強在DSP方面的動手能力和自學能力。
-
問題分析
按照題目要求,首先應利用計算機生成一個由多個頻率疊加而成的信號。之後在不通風抽樣頻率之下對信號進行採樣。編寫FFT程序對信號進行DFT變換,應能觀察出在滿足和不滿足奈奎斯特採樣定理的情況下信號頻譜分別處於不混疊和混疊狀態。然後需要對信號進行恢復以觀察滿足或不滿足奈奎斯特採樣定理的情況下,頻域的頻譜混疊對時域恢復信號的影響。在頻譜混疊時,觀察其時域信號的失真。
在滿足奈奎斯特採樣定理的情況下,分別用數字低通、高通、帶通和帶阻濾波器對要求信號進行濾波處理,觀察其頻域的變化和時域波形變化。
本實驗主要實現對時域信號的採樣(A/D轉換),濾波(數字信號處理),以及信號的插值恢復(D/A轉換)等步驟。
-
實驗原理
數字信號的傅里葉變換,通常採用離散傅里葉變換(DFT)方法。但是DFT存在的不足就是計算量太大,很難進行實時處理。計算一個N點的DFT,一般需要N²次複數乘法和N(N-1)次複數加法運算。因此,當N較大或要求對信號進行實時處理時,往往難以實現所需運算速度。FFT是一種DFT的高效算法,它根據離散傅氏變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進行改進獲得的。
DFT的運算爲:
由這種方法計算DFT對於 的每個K值,需要進行4N次實數相乘和(4N-2)次相加,對於N個k值,共需4N*N次實數相乘和(4N-2)*N次實數相加。改進DFT算法,減小它的運算量,利用DFT中 的週期性和對稱性,使整個DFT的計算變成一系列迭代運算,可大幅度提高運算過程和運算量,這就是FFT的基本思想。FFT對於在計算機系統或者說數字系統中應用離散傅立葉變換,是很大改進。
有限長離散信號x(n),n=0,1,…,N-1的DFT定義爲:
可以看出,DFT需要計算大約N2次乘法和N2次加法。當N較大時,這個計算量是很大的。利用WN的對稱性和週期性,將N點DFT分解爲兩個N/2點的 DFT,這樣兩個N/2點DFT總的計算量只是原來的一半,即(N/2)2+(N/2)2=N2/2,這樣可以繼續分解下去,將N/2再分解爲N/4點 DFT等。對於N=2m 點的DFT都可以分解爲2點的DFT,這樣其計算量可以減少爲(N/2)log2N次乘法和Nlog2N次加法。圖爲FFT與DFT-所需運算量與計算點數的關係曲線。由圖可以明顯看出FFT算法的優越性。
將x(n)分解爲偶數與奇數的兩個序列之和,即
x1(n)和x2(n)的長度都是N/2,x1(n)是偶數序列,x2(n)是奇數序列,則
其中X1(k)和X2(k)分別爲x1(n)和x2(n)的N/2點DFT。由於X1(k)和X2(k)均以N/2爲週期,且WN k+N/2=-WN k,所以X(k)又可表示爲:
上式的運算可以用圖2表示,根據其形狀稱之爲蝶形運算。依此類推,經過m-1次分解,最後將N點DFT分解爲N/2個兩點DFT。圖3爲8點FFT的分解流程。
FFT算法的原理是通過許多小的更加容易進行的變換去實現大規模的變換,降低了運算要求,提高了與運算速度。FFT不是DFT的近似運算,它們完全是等效的。
-
流程圖
DSP系統的基本組成
實驗主要步驟流程圖
-
實驗步驟
-
計算機模擬產生多頻率信號,取五個週期圖像
以兩倍奈奎斯特頻率抽樣
對採樣信號進行FFT運算
取低頻觀察頻譜特性
對離散頻域進行傅里葉反變換得到時域抽樣信號並與願信號比較
爲了得到原不失真信號,對反變換得到的信號進行零值插入(每兩個取樣值之間插入7個零)
進行傅里葉變換獲得週期延拓的頻譜
通過截至頻率爲抽樣點N一半N/2的理想低通濾波器
顯示1/16觀察低頻
進行傅里葉反變換得到還原的時域波形
通過數字低通butterworth濾波器(截止頻率10HZ)
通過數字高通butterworth濾波器(截至頻率30HZ)
通過數字帶通butterworth濾波器(截止頻率(10HZ、30HZ)
通過數字帶阻butterworth濾波器(截止頻率(10HZ、30HZ)
-
組別參數
奈奎斯特定理驗證與信號恢復
組別 |
頻率(f1,f2,f3) |
振幅(A1,A2,A3) |
信號記錄長度(NT) |
抽樣頻率 |
通過濾波器類型 |
第一組 |
(5,20,40) |
(1.5,2,-1) |
5 |
160HZ |
無 |
第二組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
無 |
第三組 |
(5,20,40) |
(1.5,2,-1) |
3 |
50HZ |
無 |
第四組 |
(5,20,40) |
(1.5,2,-1) |
3 |
80HZ |
無 |
第五組 |
(5,20,40) |
(1.5,2,-1) |
3 |
100HZ |
無 |
第六組 |
(5,20,40) |
(1.5,2,-1) |
3 |
320HZ |
無 |
信號通過理想濾波器
組別 |
頻率(f1,f2,f3) |
振幅(A1,A2,A3) |
信號記錄長度(NT) |
抽樣頻率 |
通過濾波器類型 |
|
|||||
第七組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
低通(f<10HZ) |
||||||
第八組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
高通 (f>30HZ) |
||||||
第九組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
帶通 (10HZ<f<30HZ) |
||||||
第十組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
帶阻 (f<10HZ|f>30HZ) |
||||||
信號通過butterworth濾波器
組別 |
頻率(f1,f2,f3) |
振幅(A1,A2,A3) |
信號記錄長度(NT) |
抽樣頻率 |
通過濾波器類型 |
|
||||
第十一組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
低通(f<10HZ) |
|||||
第十二組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
高通 (f>30HZ) |
|||||
第十三組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
帶通 (10HZ<f<30HZ) |
|||||
第十四組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
帶阻 (f<10HZ|f>30HZ) |
|||||
-
輸出結果(圖)
第一組輸出結果圖(實驗步驟例):
第二組輸出結果圖
第三組輸出結果圖
第四組輸出結果圖
第五組輸出結果圖
第六組輸出結果圖
第七組輸出結果圖(通過理想低通濾波器)
第八組輸出結果圖(通過理想高通濾波器)
第九組輸出結果圖(通過理想帶通濾波器10HZ~30HZ)
第十組輸出結果圖(通過理想帶阻濾波器,阻帶10~30hz)
第十一組輸出結果圖(通過10HZ butterworth低通濾波器)
第十二組輸出結果圖(通過30HZ butterworth高通濾波器)
第十三組輸出結果圖(通過10~30HZ butterworth帶通濾波器)
第十四組輸出結果圖(通過10~30HZ butterworth帶阻濾波器)
-
結果分析
組別 |
頻率(f1,f2,f3) |
振幅(A1,A2,A3) |
信號記錄長度(NT) |
抽樣頻率 |
是否混疊失真 |
第一組 |
(5,20,40) |
(1.5,2,-1) |
5 |
160HZ |
否 |
第二組 |
(5,20,40) |
(1.5,2,-1) |
3 |
160HZ |
否 |
第三組 |
(5,20,40) |
(1.5,2,-1) |
3 |
50HZ |
是 |
第四組 |
(5,20,40) |
(1.5,2,-1) |
3 |
80HZ |
是 |
第五組 |
(5,20,40) |
(1.5,2,-1) |
3 |
100HZ |
否 |
第六組 |
(5,20,40) |
(1.5,2,-1) |
3 |
320HZ |
否 |
對前六組實驗結果圖像的對比分析可得,抽樣頻率不大於奈奎斯特抽樣頻率,即兩倍最高頻率分量時,頻譜發生混疊,產生混疊失真。由第三組,第四組可以看出,頻域產生混疊,重建信號時域波形發生嚴重失真。其他各組無失真。即驗證了奈奎斯特抽樣定理。
組別 |
頻率(f1,f2,f3) |
振幅(A1,A2,A3) |
抽樣頻率 |
通過濾波器類型 |
第一組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
無 |
第七組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
理想低通 (f<10HZ) |
第十一組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
butterworth低通 (f<10HZ) |
第八組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
理想高通 (f>30HZ) |
第十二組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
butterworth高通 (f>30HZ) |
第九組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
理想帶通 (10HZ<f<30HZ) |
第十三組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
butterworth帶通 (10HZ<f<30HZ) |
第十組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
理想帶阻 (f<10HZ|f>30HZ) |
第十四組 |
(5,20,40) |
(1.5,2,-1) |
160HZ |
butterworth帶阻 (f<10HZ|f>30HZ) |
對於經過濾波器的組別和第一組比較,可以看出信號通過各個濾波器之後頻域的變化,同時觀測重建信號的時域可以看出信號通過高通、低通、帶通、帶阻濾波器後信號波形變化。可以依此看出,對於不同需求、可採用不同形式濾波器。對比理想濾波器和5階butterworth濾波器的輸出結果可已看出butterworth濾波器的濾波結果與理想濾波器的輸出結果存在不同,其頻譜變化較理想濾波器而言有一個過渡帶寬,且阻帶衰減不是理想值。與所學內容相吻合,驗證了數字濾波器的內容。
-
題目解答
模擬信號:
用一個FFT處理器對其進行頻譜分析,要求能分辨所有的頻率分量,則
- 1)最小信號記錄長度應爲多少?
- 2)採樣頻率至少爲多少?
- 3)若採樣頻率爲100Hz,則採樣點數應取幾點;
- 4)若採樣頻率爲50Hz,則頻譜分析得到的信號頻率分量有哪些?是否與信號實際頻率分量一致?爲什麼?
答:
- 最小信號記錄長度應至少包含一個信號週期,xa(t)中三個信號分量頻率分別爲5HZ、20HZ、40HZ,故頻率分辨率爲5HZ,則xa(t)的最小週期T0爲0.20s。即最小信號記錄長度應爲0.20s。
- 採樣頻率應大於奈奎斯特頻率,xa(t)中三個信號分量頻率分別爲5HZ、20HZ、40HZ,則xa(t)的信號分量的最大頻率爲40HZ,即採樣頻率fs至少爲80HZ。
- 採樣點數N = T0/T,T0 = 0.2s,若頻率爲100HZ則T = 1/fs = 0.01s。則N = 20,由N = 2^L,則L取5時N取最小值32。即,採樣點數應取32點。
- 若採樣頻率爲50HZ,則信號頻率分量有5HZ、10HZ、20HZ,因不滿足奈奎斯特定理,頻譜發生混疊,產生了新的頻率分量10HZ,其爲週期延拓吼-40HZ的頻率分量出現在摺疊頻率(25HZ)範圍內的誤檢分量。如實驗第三組數據頻譜圖像所示。頻譜混疊,對應的波形圖發生失真。50HZ抽樣對應結果如下圖所示。
-
實驗源碼及實驗詳細步驟
實驗平臺 Jupyter Notebook
實驗語言 Python
實驗所運用科學計算庫 numpy scipy signal
實驗所運用繪圖庫matplotlib seaborn
實驗源碼:
見我的下載區