DSP大作業(yè)快速傅立葉變換實驗與設(shè)計_第1頁
DSP大作業(yè)快速傅立葉變換實驗與設(shè)計_第2頁
DSP大作業(yè)快速傅立葉變換實驗與設(shè)計_第3頁
DSP大作業(yè)快速傅立葉變換實驗與設(shè)計_第4頁
DSP大作業(yè)快速傅立葉變換實驗與設(shè)計_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、DSP原理及應(yīng)用大作業(yè) 快速傅立葉變換 專業(yè):XXXX姓名:XXX 學(xué)號:08201081XX指導(dǎo)老師:XX時間:2XXXX快速傅立葉變換(FFT)實驗一、設(shè)計目的 1.在理論學(xué)習(xí)的基礎(chǔ)上,通過本實驗,加深對FFT的理解,熟悉FFT子程序。 2.熟悉應(yīng)用FFT對典型信號進行頻譜分析的方法 3.了解應(yīng)用FFT進行信號頻譜分析過程中可能出現(xiàn)的問題以便在實際中正確應(yīng)用FFT。4.掌握用窗函數(shù)法設(shè)計 FFT 快速傅里葉的原理和方法; 5熟悉 FFT 快速傅里葉特性;二、所需設(shè)備 PC兼容機一臺,操作系統(tǒng)為 Windows2000( 或 Windows98 , WindowsXP ,以下默認(rèn)為 Wind

2、ows2000),安裝 Code Composer Studio 2.0 軟件。三、設(shè)計內(nèi)容 本試驗要求使用 FFT 變換求一個時域信號的頻域特性,并從這個頻域特性求出該信號的頻率值。使用c語言實現(xiàn)對 FFT 算法的仿真,然后使用 DSP 匯編語言實現(xiàn)對 FFT 的 DSP編程。本實驗采用軟件仿真,不需設(shè)置硬件。四、設(shè)計原理 在各種信號序列中,有限長序列信號處理占有很重要地位,對有限長序列,我們可以使用離散Fouier變換(DFT)。這一變換不但可以很好的反映序列的頻譜特性,而且易于用快速算法在計算機上實現(xiàn),當(dāng)序列x(n)的長度為N時,它的DFT定義為:,反換為:有限長序列的DFT是其Z變換在

3、單位圓上的等距采樣,或者是序列Fourier變換的等距采樣,因此可以用于序列的譜分析。 FFT并不是與DFT不同的另一種變換,而是為了減少DFT運算次數(shù)的一種快速算法。它是對變換式進行一次次分解,使其成為若干小點數(shù)的組合,從而減少運算量。常用的FFT是以2為基數(shù)的,其長度 N=2L,它的效率高,程序簡單使用非常方便,當(dāng)要變換的序列長度不等于2的整數(shù)次方時,為了使用以2為基數(shù)的FFT,可以用末位補零的方法,使其長度延長至2的整數(shù)次方。在運用DFT進行頻譜分析的過程中可能產(chǎn)生幾種問題:(1) 混疊    序列的頻譜時被采樣信號的周期延拓,當(dāng)采樣速率不滿足Ny

4、quist定理時,就會發(fā)生頻譜混疊,使得采樣后的信號序列頻譜不能真實的反映原信號的頻譜。 避免混疊現(xiàn)象的唯一方法是保證采樣速率足夠高,使頻譜混疊現(xiàn)象不致出現(xiàn),即在確定采樣頻率之前,必須對頻譜的性質(zhì)有所了解,在一般情況下,為了保證高于折疊頻率的分量不會出現(xiàn),在采樣前,先用低通模擬濾波器對信號進行濾波。(2) 泄漏 實際中我們往往用截短的序列來近似很長的甚至是無限長的序列,這樣可以使用較短的DFT來對信號進行頻譜分析,這種截短等價于給原信號序列乘以一個矩形窗函數(shù),也相當(dāng)于在頻域?qū)⑿盘柕念l譜和矩形窗函數(shù)的頻譜卷積,所得的頻譜是原序列頻譜的擴展。 泄漏不能與混疊完全分開,因為泄漏導(dǎo)致頻譜的擴

5、展,從而造成混疊。為了減少泄漏的影響,可以選擇適當(dāng)?shù)拇昂瘮?shù)使頻譜的擴散減至最小。 DFT是對單位圓上Z變換的均勻采樣,所以它不可能將頻譜視為一個連續(xù)函數(shù),就一定意義上看,用DFT來觀察頻譜就好像通過一個柵欄來觀看一個圖景一樣,只能在離散點上看到真實的頻譜,這樣就有可能發(fā)生一些頻譜的峰點或谷點被“尖樁的柵欄”所攔住,不能別我們觀察到。    減小柵欄效應(yīng)的一個方法就是借助于在原序列的末端填補一些零值,從而變動DFT的點數(shù),這一方法實際上是人為地改變了對真實頻譜采樣的點數(shù)和位置,相當(dāng)于搬動了每一根“尖樁柵欄”的位置,從而使得頻譜的峰點或谷點暴露出來。 用FF

6、T可以實現(xiàn)兩個序列的圓周卷積。在一定的條件下,可以使圓周卷積等于線性卷積。一般情況,設(shè)兩個序列的長度分別為N1和N2,要使圓周卷積等于線性卷積的充要條件是FFT的長度 NN1N2 對于長度不足N的兩個序列,分別將他們補零延長到N。 當(dāng)兩個序列中有一個序列比較長的時候,我們可以采用分段卷積的方法。有兩種方法: 重疊相加法。將長序列分成與短序列相仿的片段,分別用FFT對它們作線性卷積,再將分段卷積各段重疊的部分相加構(gòu)成總的卷積輸出。 重疊保留法。這種方法在長序列分段時,段與段之間保留有互相重疊的部分,在構(gòu)成總的卷積輸出時只需將各段線性卷積部分直接連接起來,省掉了輸出段的直接相加。 (3) 柵欄效應(yīng)

7、 DFT是對單位圓上z變換的均勻采樣,所以它不可能將頻譜視為一個連續(xù) 函數(shù),從某種意義上講,用DFT來觀察頻譜就如同通過一個柵欄來觀看景象一 樣,只能在離散點上看到真實的頻譜,這樣一些頻譜的峰點或谷點就可能被"尖 樁的柵欄"擋住,也就是正好落在兩個離散采樣點之間,不能被觀察到。減小柵欄效應(yīng)的一個方法是在原序列的末端填補一些零值,從而變動DFT 的點數(shù),這一方法實際上是人為地改變了對真實頻譜采樣的點數(shù)和位置,相當(dāng)于 搬動了"尖樁柵欄"的位置,從而使得頻譜的峰點或谷點暴露出來。(4) DFT的分辨率填補零值可以改變對DTFT的采樣密度,人們常常有一種誤解,認(rèn)

8、為補零可以提高DFT的頻率分辨率,事實上,DFT的頻率分辨率通常規(guī)定為,這里的N是指信號的有效長度,而不是補零的長度。不同長度的,其DTFT的結(jié)果是不同的;而相同長度的盡管補零的長度不同其DTFT的結(jié)果應(yīng)是相同的,它們的DFT只是反映了對相同的DTFT采用了不同的采樣密度??偨Y(jié)一下: 要提高DFT分辨率只有增加信號的截取長度N。五、實驗內(nèi)容1、原來的程序下做出的圖將程序改為四個節(jié)點時的程序如下:#include "myapp.h"#include "csedu.h"#include "scancode.h"#include <m

9、ath.h>#define PI 3.1415926#define SAMPLENUMBER 128void InitForFFT();void MakeWave();int INPUTSAMPLENUMBER,DATASAMPLENUMBER;float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER;float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER;main()int i;InitForFFT();MakeWave();for ( i=0;i<SAMPLENUMBER;i+ )fW

10、aveRi=INPUTi;fWaveIi=0.0f;wi=0.0f;FFT(fWaveR,fWaveI);for ( i=0;i<SAMPLENUMBER;i+ )DATAi=wi;while ( 1 );/ break pointvoid FFT(float dataRSAMPLENUMBER,float dataISAMPLENUMBER)int x0,x1,x2,x3,xx;int i,j,k,b,p,L;float TR,TI,temp;/* following code invert sequence */for ( i=0;i<SAMPLENUMBER;i+ )x0=x

11、1=x2=x3=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01; x3=(i/8)&0x01;xx=x0*8+x1*4+x2*2+x3;dataIxx=dataRi;for ( i=0;i<SAMPLENUMBER;i+ )dataRi=dataIi; dataIi=0; /* following code FFT */for ( L=1;L<=4;L+ ) /* for(1) */b=1; i=L-1;while ( i>0 ) b=b*2; i-; /* b= 2(L-1) */for ( j=0;j&l

12、t;=b-1;j+ ) /* for (2) */p=1; i=4-L;while ( i>0 ) /* p=pow(2,8-L)*j; */p=p*2; i-;p=p*j;for ( k=j;k<128;k=k+2*b ) /* for (3) */TR=dataRk; TI=dataIk; temp=dataRk+b;dataRk=dataRk+dataRk+b*cos_tabp+dataIk+b*sin_tabp;dataIk=dataIk-dataRk+b*sin_tabp+dataIk+b*cos_tabp;dataRk+b=TR-dataRk+b*cos_tabp-da

13、taIk+b*sin_tabp;dataIk+b=TI+temp*sin_tabp-dataIk+b*cos_tabp; /* END for (3) */ /* END for (2) */ /* END for (1) */for ( i=0;i<SAMPLENUMBER/2;i+ ) wi=sqrt(dataRi*dataRi+dataIi*dataIi); /* END FFT */void InitForFFT()int i;for ( i=0;i<SAMPLENUMBER;i+ )sin_tabi=sin(PI*2*i/SAMPLENUMBER);cos_tabi=co

14、s(PI*2*i/SAMPLENUMBER);void MakeWave()int i;for ( i=0;i<SAMPLENUMBER;i+ )INPUTi=sin(PI*2*i/SAMPLENUMBER*3)*1024;得出的圖為: 程序改為八個節(jié)點時:#include "myapp.h"#include "csedu.h"#include "scancode.h"#include <math.h>#define PI 3.1415926#define SAMPLENUMBER 128void InitForFF

15、T();void MakeWave();int INPUTSAMPLENUMBER,DATASAMPLENUMBER;float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER;float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER;main()int i;InitForFFT();MakeWave();for ( i=0;i<SAMPLENUMBER;i+ )fWaveRi=INPUTi;fWaveIi=0.0f;wi=0.0f;FFT(fWaveR,fWaveI);for ( i=0;i<

16、;SAMPLENUMBER;i+ )DATAi=wi;while ( 1 );/ break pointvoid FFT(float dataRSAMPLENUMBER,float dataISAMPLENUMBER)int x0,x1,x2,x3,x4,x5,x6,x7,xx;int i,j,k,b,p,L;float TR,TI,temp;/* following code invert sequence */for ( i=0;i<SAMPLENUMBER;i+ )x0=x1=x2=x3=x4=x5=x6=0;x0=i&0x01; x1=(i/2)&0x01; x2

17、=(i/4)&0x01; x3=(i/8)&0x01;x4=(i/16)&0x01; x5=(i/32)&0x01; x6=(i/64)&0x01;x7=(i/128)&x01;xx=x0*128+x1*64+x2*32+x3*16+x4*8+x5*4+x6*2+x7;dataIxx=dataRi;for ( i=0;i<SAMPLENUMBER;i+ )dataRi=dataIi; dataIi=0; /* following code FFT */for ( L=1;L<=8;L+ ) /* for(1) */b=1; i=L-1

18、;while ( i>0 ) b=b*2; i-; /* b= 2(L-1) */for ( j=0;j<=b-1;j+ ) /* for (2) */p=1; i=8-L;while ( i>0 ) /* p=pow(2,8-L)*j; */p=p*2; i-;p=p*j;for ( k=j;k<128;k=k+2*b ) /* for (3) */TR=dataRk; TI=dataIk; temp=dataRk+b;dataRk=dataRk+dataRk+b*cos_tabp+dataIk+b*sin_tabp;dataIk=dataIk-dataRk+b*sin_tabp+dataIk+b*cos_tabp;data

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論