湖北民族學院資訊工程學院實驗報告
(電氣、電子類專用)
班級: 姓名:學號: 實驗成績:
實驗時間: 2010 年 11 月 27 日 3、4節實驗地點: 數字訊號處理實驗室
課題名稱:數字訊號處理實驗型別: 設計型驗證型綜合型
實驗題目: 用fft對訊號做頻譜分析 (一)
實驗儀器pc、matlab
一、 實驗目的
學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便正確應用fft。
二、實驗原理、原理圖及電路圖
用fft對訊號作頻譜分析是學習數字訊號處理的重要內容。經常需要進行譜分析的訊號是模擬訊號和時域離散訊號。對訊號進行譜分析的重要問題是頻譜解析度d和分析誤差。
頻譜解析度直接和fft的變換區間n有關,因為fft能夠實現的頻率解析度是,因此要求。可以根據此式選擇fft的變換區間n。誤差主要來自於用fft作頻譜分析時,得到的是離散譜,而訊號(週期訊號除外)是連續譜,只有當n較大時離散譜的包絡才能逼近於連續譜,因此n要適當選擇大一些。
週期訊號的頻譜是離散譜,只有用整數倍週期的長度作fft,得到的離散譜才能代表週期訊號的頻譜。如果不知道訊號週期,可以盡量選擇訊號的觀察時間長一些。
對模擬訊號進行譜分析時,首先要按照取樣定理將其變成時域離散訊號。如果是模擬週期訊號,也應該選取整數倍週期的長度,經過取樣後形成週期序列,按照週期序列的譜分析進行。
三、實驗內容及步驟
(1)對以下序列進行譜分析。
選擇fft的變換區間n為8和16 兩種情況進行頻譜分析。分別列印其幅頻特性曲線。 並進行對比、分析和討論。
(2)對以下週期序列進行譜分析。
選擇fft的變換區間n為8和16 兩種情況分別對以上序列進行頻譜分析。分別列印其幅頻特性曲線。並進行對比、分析和討論。
(3)對模擬週期訊號進行譜分析
選擇取樣頻率,變換區間n=16,32,64 三種情況進行譜分析。分別列印其幅頻特性,並進行分析和討論。
為了便於讀取頻率值,最好關於π歸一化,即以作為橫座標。
1、實驗內容(1)
圖(1a)和(1b)說明的8點dft和16點dft分別是的頻譜函式的8點和16點取樣;
因為,所以,與的8點dft的模相等,如圖(2a)和(3a)。但是,當n=16時,與不滿足迴圈移位關係,所以圖(2b)和(3b)的模不同。
2、實驗內容(2),對週期序列譜分析
的週期為8,所以n=8和n=16均是其週期的整數倍,得到正確的單一頻率正弦波的頻譜,僅在0.25π處有1根單一譜線。如圖(4b)和(4b)所示。
的週期為16,所以n=8不是其週期的整數倍,得到的頻譜不正確,如圖(5a)所示。n=16是其乙個週期,得到正確的頻譜,僅在0.25π和0.
125π處有2根單一譜線, 如圖(5b)所示。
3、實驗內容(3),對模擬週期訊號譜分析
有3個頻率成分,。所以的週期為0.5s。
取樣頻率。變換區間n=16時,觀察時間tp=16t=0.25s,不是的整數倍週期,所以所得頻譜不正確,如圖(6a)所示。
變換區間n=32,64 時,觀察時間tp=0.5s,1s,是的整數週期,所以所得頻譜正確,如圖(6b)和(6c)所示。圖中3根譜線正好位於處。
變換區間n=64 時頻譜幅度是變換區間n=32 時2倍,這種結果正好驗證了用dft對中期序列譜分析的理論。
注意:(1)用dft(或fft)對模擬訊號分析頻譜時,最好將x(k)的自變數k換算成對應的模擬頻率fk,作為橫座標繪圖,便於觀察頻譜。這樣,不管變換區間n取訊號週期的幾倍,畫出的頻譜圖中有效離散諧波譜線所在的頻率值不變,如圖(6b)和(6c)所示。
(2)本程式直接畫出取樣序列n點dft的模值,實際上分析頻譜時最好畫出歸一化幅度譜,這樣就避免了幅度值隨變換區間n變化的缺點。本實驗程式這樣繪圖只要是為了驗證了用dft對中期序列譜分析的理論。
四、實驗結果記錄及分析
(1) x1n8
clear all;
x1n=[1,1,1,1];
x1n8=fft(x1n,8);
stem(abs(x1n8));
axis([0,10,0,1.2*max(abs(x1n8))]);
x1n16
clear all;
x1n=[1,1,1,1];
x1n16=fft(x1n,16);
stem(abs(x1n16));
axis([0,16,0,1.2*max(abs(x1n16))]);
x2n8
clear all;
xa=1:4;
xb=4:8 ;
x2n=[xa,xb];
x2n8=fft(x2n,8);
stem(abs(x2n8));
axis([0,10,0,1.2*max(abs(x2n8))]);
x2n16
clear all;
xa=1:4;
xb=4:8 ;
x2n=[xa,xb];
x2n16=fft(x2n,16);
stem(abs(x2n16));
axis([0,16,0,1.2*max(abs(x2n16))]);
x3n8
clear all;
xa=4:-1:1;
xb=1:4;
x3n=[xa,xb];
x3n8=fft(x3n,8);
stem(abs(x3n8));
axis([0,8,0,1.2*max(abs(x3n8))]);
x316
clear all;
xa=4:-1:1;
xb=1:4;
x3n=[xa,xb];
x3n16=fft(x3n,16);
stem(abs(x3n16));
axis([0,16,0,1.2*max(abs(x3n16))]);
x4n8
clear all;
n=8;
n=0:n-1;
x4n=cos(pi*n/4);
x4n8=fft(x4n,8);
stem(abs(x4n8));
axis([0,8,0,1.2*max(abs(x4n8))]);
x4n16
clear all;
n=16;
n=0:n-1;
x4n=cos(pi*n/4);
x4n16=fft(x4n,16);
stem(abs(x4n16));
axis([0,16,0,1.2*max(abs(x4n16))]);
x5n8
clear all;
n=8;
n=0:n-1;
x4n=cos(pi*n/4)+cos(pi*n/8);
x4n8=fft(x4n,8);
stem(abs(x4n8));
axis([0,8,0,1.2*max(abs(x4n8))]);
x5n16
clear all;
n=16;
n=0:n-1;
x4n=cos(pi*n/4)+cos(pi*n/8);
x4n16=fft(x4n,16);
stem(abs(x4n16));
axis([0,16,0,1.2*max(abs(x4n16))]);
x6nfs=64;t=1/fs;
n=16;n=0:n-1;
x6nt=cos(8*pi*n*t)+cos(16*pi*n*t)+cos(20*pi*n*t);
x6k16=fft(x6nt);
x6k16=fftshift(x6k16);
tp=n*t;f=1/tp;
k=-n/2:n/2-1;fk=k*f;
subplot(3,1,1);stem(fk,abs(x6k16),'.');box on
title('(6a) 16點|dft[x_6(nt)]|');xlabel('f(hz)');ylabel('幅度');
axis([-n*f/2-1,n*f/2-1,0,1.2*max(abs(x6k16))])
n=32;n=0:n-1;
x6nt=cos(8*pi*n*t)+cos(16*pi*n*t)+cos(20*pi*n*t);
x6k32=fft(x6nt);
x6k32=fftshift(x6k32);
tp=n*t;f=1/tp;
k=-n/2:n/2-1;fk=k*f;
subplot(3,1,2);stem(fk,abs(x6k32),'.');box on
title('(6b) 32點|dft[x_6(nt)]|');xlabel('f(hz)');ylabel('幅度');
axis([-n*f/2-1,n*f/2-1,0,1.2*max(abs(x6k32))])
n=64;n=0:n-1;
x6nt=cos(8*pi*n*t)+cos(16*pi*n*t)+cos(20*pi*n*t);
6k64=fft(x6nt);
x6k64=fftshift(x6k64);
tp=n*t;f=1/tp;
k=-n/2:n/2-1;fk=k*f;
subplot(3,1,3);stem(fk,abs(x6k64),'.'); box on%繪製8點dft的幅頻特性圖
title('(6a) 64點|dft[x_6(nt)]|');xlabel('f(hz)');ylabel('幅度');
axis([-n*f/2-1,n*f/2-1,0,1.2*max(abs(x6k64))])
五.思考題解答
(1)對於週期序列,如果週期不知道,如何用fft進行譜分析?
答:設乙個定長的值m與2m分析後誤差大則取4n,4m的譜分析與2m比較,直到與譜分析相差不多時便認為次譜分析近似原來的譜分析。
(2)如何選擇fft的變化區間?(包括非週期訊號和週期訊號)
答:週期為n的訊號可以看作長度為n的有限長序列,非週期訊號可以看做長度為無窮的有限序列。
(3)當n=8時,x2n和x3n的幅頻特性會相同嗎?為什麼?n=16呢?
答:當n=8時,幅頻特性相同。因為它們函式表達的相同。當n=16時,模值不相同。
實驗三 用FFT對訊號作頻譜分析 實驗報告
一 實驗目的與要求 學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便正確應用fft。二 實驗原理 用fft對訊號作頻分析是學習數字訊號處理的重要內容,經常需要進行分析的訊號是模擬訊號的時域離散訊號。對訊號進行譜分析的重要問題是頻譜解析度d和分析誤差。頻譜解析...
實驗三 用FFT對訊號作頻譜分析 實驗報告
一 實驗目的與要求 學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便正確應用fft。二 實驗原理 用fft對訊號作頻分析是學習數字訊號處理的重要內容,經常需要進行分析的訊號是模擬訊號的時域離散訊號。對訊號進行譜分析的重要問題是頻譜解析度d和分析誤差。頻譜解析...
用FFT做譜分析
實驗一 用fft做譜分析 1 實驗目的 1 進一步加深dft演算法原理和基本性質的理解。2 熟悉fft演算法原理和fft子程式的應用。3 學習用fft對連續訊號和時域離散訊號進行譜分析的方法,了解可能出現的分析誤差及其原因,以便在實際中正確應用fft。2 實驗原理 dft是週期序列,有n個獨立的數值...