資源描述:
《快速傅里葉變換fft的Matlab實現(xiàn)-實驗報告.doc》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、一、實驗目的1在理論學習的基礎上,通過本實驗加深對快速傅立葉變換的理解;2熟悉并掌握按時間抽取FFT算法的程序;3了解應用FFT進行信號頻譜分析過程中可能出現(xiàn)的問題,例如混淆、泄漏、柵欄效應等,以便在實際中正確應用FFT。二、實驗內容1仔細分析教材第六章‘時間抽取法FFT’的算法結構,編制出相應的用FFT進行信號分析的C語言(或MATLAB語言)程序;用MATLAB語言編寫的FFT源程序如下:%%輸入數(shù)據(jù)f、N、T及是否補零clc;clear;f=input('輸入信號頻率f:');N=input('輸入采樣點數(shù)N:');T=i
2、nput('輸入采樣間隔T:');C=input('信號是否補零(補零輸入1,不補零輸入0):');%補零則輸入1,不補則輸入0if(C==0)t=0:T:(N-1)*T;x=sin(2*pi*f*t);b=0;elseb=input('輸入補零的個數(shù):');while(log2(N+b)~=fix(log2(N+b)))b=input('輸入錯誤,請重新輸入補零的個數(shù):');endt=0:T:(N+b-1)*T;x=sin(2*pi*f*t).*(t<=(N-1)*T);end%%fft算法的實現(xiàn)A=bitrevorder(x
3、);%將序列按二進制倒序N=N+b;M=log2(N);%M為蝶形算法的層數(shù)W=exp(-j*2*pi/N);forL=1:1:M%第L層蝶形算法B=2^L/2;%B為每層蝶形算法進行加減運算的兩個數(shù)的間隔K=N/(2^L);%K為每層蝶形算法中獨立模塊的個數(shù)fork=0:1:K-1forJ=0:1:B-1p=J*2^(M-L);%p是W的指數(shù)q=A(k*2^L+J+1);%用q來代替運算前面那個數(shù)A(k*2^L+J+1)=q+W^p*A(k*2^L+J+B+1);A(k*2^L+J+B+1)=q-W^p*A(k*2^L+J+B
4、+1);endendend%%畫模特性的頻譜圖z=abs(A);%取模z=z./max(z);%歸一化holdonsubplot(2,1,1);stem(0:1:N-1,x,'DisplayName','z');title('時域信號');subplot(2,1,2);stem(0:1:N-1,z,'DisplayName','z');title('頻譜圖');figure(gcf)%畫圖1用FFT程序計算有限長度正弦信號分別在以下情況下所得的DFT結果并進行分析和討論:a)信號頻率f=50Hz,采樣點數(shù)N=32,采樣間隔T=0
5、.sa)信號頻率f=50Hz,采樣點數(shù)N=32,采樣間隔T=0.005sb)信號頻率f=50Hz,采樣點數(shù)N=32,采樣間隔T=0.sa)信號頻率f=50Hz,采樣點數(shù)N=32,采樣間隔T=0.004sa)信號頻率f=50Hz,采樣點數(shù)N=64,采樣間隔T=0.sf)信號頻率f=250Hz,采樣點數(shù)N=32,采樣間隔T=0.005sf)將c)信號后補32個0,做64點FFT三、實驗分析DFT是對有限序列做傅里葉變換后在頻域上進行采樣,而相對應的時域以頻譜上的采樣頻率的倒數(shù)進行周期拓展。而在此題中,題中給出時域上的連續(xù)信號,對該連
6、續(xù)信號進行加窗采樣后得到有限序列,要求對該有限序列求DFT。所以整個步驟為:對時域加窗,則相對應的頻域與窗函數(shù)的傅里葉變換即sinc函數(shù)相卷積;再對時域采樣,則對應的頻域以時域采樣頻率的倒數(shù)進行周期性拓展;再將時域以窗長為周期進行周期性拓展,對應的頻域以該周期的倒數(shù)進行采樣,即得所求DFT。a)信號頻率f=50Hz,采樣點數(shù)N=32,采樣間隔T=0.s。Sin函數(shù)信號對應的頻譜圖為在窗長,對應的sinc函數(shù)主瓣寬,其余波節(jié)與波節(jié)間距,兩信號在頻域上相卷,即將sinc函數(shù)平移;在時域以進行采樣,即頻域以進行周期性拓展。在頻域上采3
7、2個點,則對應每個點之間的間距為,(對應時域以0.02s進行周期性拓展,不予考慮)。此時我們可以發(fā)現(xiàn)除了在f=50Hz(對應為第1個點)上采到的點幅值為sinc函數(shù)的最大值外,其他頻率上采到的點剛好對應sinc函數(shù)的波節(jié)處,即此時采到的值為0。又因為DFT滿足共軛對稱,所以可得圖如上。b)信號頻率f=50Hz,采樣點數(shù)N=32,采樣間隔T=0.005s。與a相比,采樣間隔T不同,所以窗長,為a中窗長的8倍,所以窗長在頻域上對應的sinc函數(shù)主瓣寬及波節(jié)與波節(jié)間距都為a中的即,兩信號相卷,將sinc函數(shù)平移到;在時域以進行采樣,即
8、頻域以進行周期性拓展。在頻域上采32個點,則對應每個點之間的間距為。此時我們可以發(fā)現(xiàn)除了在f=50Hz上采到的點幅值為sinc函數(shù)的最大值外,其他頻率上采到的點剛好對應sinc函數(shù)的波節(jié)處,即采到的值為0,而f=50Hz=8*6.25Hz,則第8個點為1;又因為