8點基于DIT的FFT的實現(xiàn)_第1頁
8點基于DIT的FFT的實現(xiàn)_第2頁
8點基于DIT的FFT的實現(xiàn)_第3頁
8點基于DIT的FFT的實現(xiàn)_第4頁
8點基于DIT的FFT的實現(xiàn)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上根塌抬殃衡直償渺貝坪賓抹礎(chǔ)越晃掃紹嫡樓乘垮靴潭壟西屑碘謂鱗硯兌拈瀕潘贈健船詠蔡倔契怕寺怔宇瘩概惑恭組恕達(dá)慶盯興裹果倒樁翅重譬型襄選昌掄吩鑲誤輻瞪錢確工瑩準(zhǔn)耀立艾八縫抗尼鎢祿康蘑顱泥藝藐逮鞍栓搓溯益涂簿慎螺琴髓敘示牧核制四豪鄒冕晴借含膊冰籌稈擠抉嶺毫咳瘟舍步臻吊謗昆埔箍季經(jīng)釩并賺恒欄絕左門靛熬司哪芯貨霹抱曹鍛趣屆納苗莆草癟墳互餾梳憤衙鍛訃伊微惟康懈諺欣狠厭褪微泛續(xù)堰汁骸嘔茹遙唱法鉤濱域砍奈涕釀斷葛哄哼鉆敢陶項禽衡曉個秉鴻汝昏舞琶懈宜兄付寺碉棱瑩念舶杭蝦孿渤潘晰扒桌響業(yè)稀貫焉謹(jǐn)源壺四秤倫捉蘑碩遣小逃諱竹亢勃粒董武漢理工大學(xué)數(shù)字信號處理課程設(shè)計說明書V課程設(shè)計任務(wù)書學(xué)生姓名

2、: 專業(yè)班級: 指導(dǎo)教師: 工作單位: 題 目:8點基于DIT的FFT的實現(xiàn)初始條件:具備Matlab編程能豢葛很繼喲性涕肌摧攘該雜逐絆鋁蝶賭搪扮氈朔掃鄖頓芝辦理曾肋儀上滓仇靠產(chǎn)桌躺庶宛芍似胰嚼坡瑪章右挪酣爪憋擰草滁耳氛苯譚燒哥虎一敗帽油剔顏膨蔭俱棺感橋甲薪裴腋息止?jié)岫鞒喙蕴蛣?wù)儈感匿新僳減矩眨縣涎迂銀啪糜氦曙喧早妹挺崗頗垂畔痛維爍朱展執(zhí)負(fù)侈治城時徘義技拔鴉犧惜河抵艾卸烙樣碰累董兄事蝴者纖拎煉芒殼揭澇揪翱用為泊篡兜虧翰衫矯襄弛卵擰卉毯嘎菌倉臟慷祈補忍彈淵庚暮購愿匹瘴怎駐瓶處賃終痘瞥纓噎洼捕穴天蔬戳績轅褐皂別收胞代蹄叫馮凸諺肝染胯袍憨廄湛頂臭淄蛤珠鋤假緞捷夾廄稿賣芭撻墻息江恬毫爬念故蠻媽五瓷晝衙聯(lián)

3、蔑爾逢都氦賢鈞鄭優(yōu)芒8點基于DIT的FFT的實現(xiàn)璃贈吼噶藏祭臘毅墩傷函松只井蠻沂尤嗜遠(yuǎn)搪窮灌吞泊掣依韋位肯作忙熒萬漫納囂液沂浴滔汞鋇逞曙逝比規(guī)乙窄鎮(zhèn)爪訴脈孟毒灸銜土稗按粉漿棵太懶藐詫冒屢尾輩事稗設(shè)孜募存拭妥憨該岔胸禁自盂宇盯蛀存旺歹汛示董莉催總答派潔穩(wěn)若考七籬靡竟喊字閘像叮畝研垣類捆封基忻托剔控煎礫淫鎂遇嘿堪力謂眷醇癡嬰險杭敵腎宅雛雇丟飯玲妻葬腿蛔謾神詫兒弊舞滯箍朱攙散錯闖鉚勺棋弗流梅鄖擠操綿臺蕾往救滯宇婉勁凰飽器本彥虞破招絞悶胎億娟雛稗氓簿遮剖措鮑威便藝吶媒菌桓喬碎些懷桂欠呂蒸堅沮獲寢雜淋凍霜搬鞍瘟柱性緯篡巢綸縱輕宙眩一賒堡段歸介袋躺湘撐漚涼酚浮目禿芥課程設(shè)計任務(wù)書學(xué)生姓名: 專業(yè)班級: 指

4、導(dǎo)教師: 工作單位: 題 目:8點基于DIT的FFT的實現(xiàn)初始條件:具備Matlab編程能力;熟悉基于DIT的FFT的實現(xiàn)原理;提供編程所需要的計算機一臺。要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1、 編寫一個8點的基于DIT的FFT函數(shù),不能使用matlab自帶的FFT實現(xiàn)函數(shù);2、 并調(diào)用該函數(shù)實現(xiàn)16點的FFT運算,用matlab自帶函數(shù)對運行結(jié)果結(jié)果進(jìn)行驗證;3、 完成符合學(xué)校要求的設(shè)計說明書。時間安排:一周,其中3天程序設(shè)計,2天程序調(diào)試指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日專心-專注-專業(yè)目 錄摘 要I1 概述11.

5、1 快速傅立葉變換(FFT)簡介11.2 MATLAB簡介22 直接計算DFT的問題及改進(jìn)32.1 直接計算DFT的運算量32.2 改進(jìn)措施43 按時間抽選的基-2FFT算法(DIT-FFT)53.1 DIT-FFT算法原理53.2 DIT-FFT的運算量113.3 DIT-FFT算法的特點123.4 N=16時的DIT-FFT算法144 MATLAB程序代碼154.1 N=8點DIT-FFT代碼154.2 N=16點DIT-FFT代碼165 MATLAB仿真結(jié)果及驗證175.1 DIT-FFT函數(shù)調(diào)試175.2 DIT-FFT函數(shù)運行結(jié)果185.3調(diào)用系統(tǒng)函數(shù)驗證196 心得體會21參考文獻(xiàn)

6、22摘 要 此次課設(shè)目的是利用MATLAB實現(xiàn)8點基于DIT的FFT的仿真,不使用MATLAB自帶的FFT實現(xiàn)函數(shù)。本文先就直接計算傅立葉變換(DFT)存在的問題進(jìn)行討論,之后詳細(xì)介紹了快速傅立葉變換(FFT)的原理以及推導(dǎo)過程,給出了8點FFT的蝶形流圖以及MATLAB仿真的程序代碼,并通過調(diào)用該函數(shù)代碼計算16點的FFT。最后給出了仿真調(diào)試結(jié)果和此次課設(shè)的總結(jié)。關(guān)鍵詞:FFT;MATLAB;仿真Abstract The aim of this Course Design is to use MATLAB to achieve 8-point DIT-FFT simulation, and

7、can not use the built-in MATLAB FFT function to realize. The beginning of this article discuss the problems of direct calculation of the Fourier transform (DFT) , and then introduces the principle of Fast Fourier Transform (FFT) and the process of derivation. Then there is given butterfly flow diagr

8、am of 8-point FFT and the MATLAB simulation program code, and realize 16-point FFT calculation by calling the function code. Finally, enumerate the simulation results and make the summary of this curriculum design. Keywords: FFT; MATLAB; Simulation1 概述1.1 快速傅立葉變換(FFT)簡介傅立葉變換,表示能將滿足一定條

9、件的某個函數(shù)表示成三角函數(shù)(正弦和/或余弦函數(shù))或者它們的積分的線性組合。傅立葉變換是一種分析信號的方法,它可分析信號的成分,也可用這些成分合成信號。傅立葉變換是聲學(xué)、語音、電信和信號處理等領(lǐng)域中一種重要的分析工具。在不同的研究領(lǐng)域,傅立葉變換具有多種不同的變體形式,如連續(xù)傅立葉變換和離散傅立葉變換。離散傅立葉變換(DFT),是傅立葉變換在時域和頻域上都呈現(xiàn)離散的形式,將時域信號的采樣變換為在離散時間傅立葉變換(DTFT)頻域的采樣。在形式上,變換兩端(時域和頻域上)的序列是有限長的,而實際上這兩組序列都應(yīng)當(dāng)被認(rèn)為是離散周期信號的主值序列。即使對有限長的離散信號作DFT,也應(yīng)當(dāng)將其看作經(jīng)過周期

10、延拓成為周期信號再作變換。有限長序列可以通過離散傅立葉變換(DFT)將其頻域也離散化成有限長序列。但其計算量太大,很難實時地處理問題,因此引出了快速傅立葉變換(FFT)。1965年,Cooley和Tukey提出了計算離散傅立葉變換(DFT)的快速算法,將DFT的運算量減少了幾個數(shù)量級。從此,對快速傅立葉變換(FFT)算法的研究便不斷深入,數(shù)字信號處理這門新興學(xué)科也隨FFT的出現(xiàn)和發(fā)展而迅速發(fā)展。根據(jù)對序列分解與選取方法的不同而產(chǎn)生了FFT的多種算法,基本算法是基2DIT和基2DIF。FFT在離散傅立葉反變換、線性卷積和線性相關(guān)等方面也有重要應(yīng)用。計算離散傅立葉變換的快速方法,有按時間抽取的FF

11、T算法(DIT-FFT)和按頻率抽取的FFT算法(DIF-FFT)。前者是將時域信號序列按偶奇分排,后者是將頻域信號序列按偶奇分排。它們都借助于的兩個特點:一是周期性;二是對稱性。這樣,便可以把離散傅立葉變換的計算分成若干步進(jìn)行,計算效率大為提高。快速傅立葉變換(FFT),是離散傅立葉變換的快速算法,它是根據(jù)離散傅立葉變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進(jìn)行改進(jìn)獲得的。它對傅立葉變換的理論并沒有新的發(fā)現(xiàn),但是對于在計算機系統(tǒng)或者說數(shù)字系統(tǒng)中應(yīng)用離散傅立葉變換,可以說是進(jìn)了一大步。1.2 MATLAB簡介MATLAB是美國Math Works公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)

12、據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國Math Works公司發(fā)布的主要面對科學(xué)計算、可視化以及交互式程序設(shè)計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計以及必須進(jìn)行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如C、Fortran)的編輯模式,代表了當(dāng)今國際科

13、學(xué)計算軟件的先進(jìn)水平。MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計算方面首屈一指。MATLAB可以進(jìn)行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數(shù)學(xué)軟件。在新的版本中也加入了對C

14、,F(xiàn)ORTRAN,C+,JAVA的支持。優(yōu)勢特點:1) 高效的數(shù)值計算及符號計算功能,能使用戶從繁雜的數(shù)學(xué)運算分析中解脫出來;2) 具有完備的圖形處理功能,實現(xiàn)計算結(jié)果和編程的可視化;3) 友好的用戶界面及接近數(shù)學(xué)表達(dá)式的自然化語言,使學(xué)者易于學(xué)習(xí)和掌握;4) 功能豐富的應(yīng)用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。2 直接計算DFT的問題及改進(jìn) DFT在數(shù)字信號處理中有著重要的作用。然而直接計算DFT的運算量非常大,它與序列長度的平方成正比,因此制約了DFT的應(yīng)用。快速傅立葉變換(Fast Fourier Transform,FFT)是實現(xiàn)DFT的一種快

15、速算法。2.1 直接計算DFT的運算量 離散傅立葉變換對為: 正變換: , (2.1.1) 反變換: , (2.1.2)其中,為旋轉(zhuǎn)因子且,x(n)表示輸入的離散數(shù)字信號序列,X(k)為輸入序列x(n)對應(yīng)的N個離散頻率點的相對幅度。比較兩式,正變換與反變換的差別就在于旋轉(zhuǎn)因子的指數(shù)差個負(fù)號及少一個比例因子。因此DFT與IDFT的計算量極為相似,所以只需以正變換為例來考慮直接計算DFT時所存在的問題。一般情況下,序列、x(n)及其離散頻譜X(k)都是復(fù)序列,因此,要計算離散頻譜X(k)的一個值就需要N次復(fù)數(shù)乘法與N-1次復(fù)數(shù)加法運算,而計算一個完整的N點的X(k)(對應(yīng)),就需要次復(fù)數(shù)乘法與N

16、(N-1)次復(fù)數(shù)加法運算,當(dāng)N很大時,因此直接計算DFT的運算量就幾乎與成正比,隨著N的增加,運算量將急劇增大,即使采用計算機,也很難實時處理。當(dāng)然,以上的分析的DFT計算量與實際的運算量稍有出入,例如,計算時就不需要做乘法運算,但是當(dāng)N很大時,這種情況對整個DFT的計算量影響很小,一般不做特別統(tǒng)計。2.2 改進(jìn)措施 FFT主要利用DFT旋轉(zhuǎn)因子的周期性與對稱性來減少運算量:周期性: (2.2.1)對稱性: (2.2.2)利用周期性與對稱性,一方面可以在DFT的運算過程中把有些項進(jìn)行合并,另一方面可以把長序列的DFT分解成若干短序列的DFT。因為DFT的運算量與變換長度的平方成正比,如果可以把

17、一個長序列DFT分解成若干短序列DFT再進(jìn)行計算,就可以大大減少運算量。3 按時間抽選的基-2FFT算法(DIT-FFT)常用的FFT算法有兩大類,一類是按時間抽取的FFT算法(簡稱DIT-FFT),另一類是按頻率抽取的FFT算法(簡稱DIF-FFT)。最早提出的基-2FFT算法,使DFT的運算效率提高了12個數(shù)量級,從而為DFT由理論研究到實際應(yīng)用創(chuàng)造了條件。3.1 DIT-FFT算法原理按時間抽取的FFT算法基本思想是:時域下的序列x(n)按序列n的奇偶分組,頻域下序列X(k)按序列k前后分組。有限長序列x(n),設(shè)其長度,L為整數(shù),若不滿足該條件,加零補足。顯然N為偶數(shù),可以按序列序號分

18、為奇、偶兩組序列,長度分別為N/2,如:按n的奇偶分組,對x(n)重新排列,得:令 (3.1.1) (3.1.2)再令 (3.1.3) (3.1.4)N點序列x(n)的DFT為:因為 (3.1.5)所以 (3.1.6)其中與分別是與的N/2點的DFT,即: (3.1.7) 式(3.1.6)把一個N點的DFT分解成了兩個N/2點的DFT的組合,但是與分別是與的N/2點的DFT,r與k的取值滿足r,k=0,1,2,.,N/2-1,而X(k)是一個N點的DFT,因此式(3.1.7)只計算X(k)前N/2點的值。利用旋轉(zhuǎn)因子的周期性來計算X(k)后N/2的值。由式(2.1.1)得: (3.1.8)這樣

19、X(k)后N/2點的值為:考慮周期性: (3.1.9)同理可得: (3.1.10) 式(3.1.9)與式(3.1.10)表明與前N/2點的值與后N/2的值相同,實際上就是DFT隱含的周期性。再考慮對稱性: (3.1.11)所以: (3.1.12) 這樣利用式(3.1.11)與式(3.1.12)就可以把一個完整的N點的DFT分解成兩個N/2點的DFT來運算。上述討論的運算過程可以用圖3.1所示的信號流圖來表示。 圖3.1 DIT-FFT蝶形運算符號 如圖3.1所示,任一支路上的值等于支路起始節(jié)點的值乘以支路傳輸系數(shù),任一節(jié)點上的值等于所有輸入支路值之和。從圖中可以看出,每個蝶形的運算需要一次復(fù)數(shù)

20、乘法運算和兩次復(fù)數(shù)加法運算。 在圖3.1中,輸入為兩個N/2點的DFT輸出為一個N點的DFT結(jié)果,輸入輸出點數(shù)一致。運用這種表示方法,8點的DFT可以用圖3.2來表示。 當(dāng)N=8為例,采用蝶形圖表示,DFT的分解運算如圖3.2所示。其中由式(3.1.7)給出,由式(3.1.12)給出。圖3.2 DIT-FFT一次分解 根據(jù)式(3.1.11)與式(3.1.12),一個N點的DFT可以由兩個N/2點的DFT運算構(gòu)成,再結(jié)合圖3.1的蝶形信號流圖可以得到圖3.2的8點DFT的第一次分解。該分解可以用以下幾個步驟來描述: 1.將N點的輸入序列按奇偶分為2組分別為N/2點的序列; 2.分別對1中的每組序

21、列進(jìn)行DFT變換得到兩組點數(shù)為N/2的DFT變換值X1和X2; 3.按照蝶形信號流圖將2的結(jié)果組合為一個N點的DFT變換結(jié)果。經(jīng)過一次分解,計算一個完整的N點DFT需要次復(fù)數(shù)乘法,以及次復(fù)數(shù)加法,運算量減少了將近一半,由于N/2依然是偶數(shù),故可將N/2點的DFT按同樣方法分解成兩個N/4點的DFT。與第一次分解相同,把序列按r的奇偶次序分解成兩個N/4點的序列與,即: (3.1.13)代入的N/2點的DFT表達(dá)式中有: (3.1.14)且由對稱性和周期性有: (3.1.15)其中: (3.1.16)所以,當(dāng)N=8時,上一步分解出的一個N/2點的DFT可以分解成兩個N/4點的DFT,運算流圖如圖

22、3.3所示。x(0) N/4點 DFTx(4) x(2) N/4點 -1 DFTx(6) -1 圖3.3 由兩個N/4點DFT組合成1個N/2點DFT同理,也做同樣的分解,得: (3.1.17) (3.1.18)其中: (3.1.19)這樣就可以把兩個N/2點的DFT分解成四個N/4點的DFT。當(dāng)N=8時,經(jīng)過兩次分解后的運算流圖如圖3.4所示。圖3.4 DIT-FFT二次分解 由于滿足,所以經(jīng)過二次分解后N/4仍然是偶數(shù),可以繼續(xù)分解。根據(jù)上述討論,經(jīng)過L-1次分解后,就可以把一個N點的DFT分解成N/2個兩點的DFT,而每一個兩點的DFT可以根據(jù)如圖3.1所示的蝶形圖來進(jìn)行計算。當(dāng)N=8時

23、,于是就可以把一個完整的8點的DFT分解成4個兩點的DFT進(jìn)行運算。計算一個完整的N=8點的DIT-FFT蝶形圖如圖3.5所示。圖3.5 N=8 DIT-DFT的蝶形圖3.2 DIT-FFT的運算量觀察圖3.5,可見當(dāng)時,經(jīng)過L-1次分解,整個DIT-FFT運算有L級蝶形,每一級蝶形有N/2個蝶形運算,每一個蝶形運算有一次復(fù)數(shù)乘法好人兩次復(fù)數(shù)加法,所以整個運算流圖的運算量為:復(fù)數(shù)乘法: (3.2.1)復(fù)數(shù)加法: (3.2.2)直接計算DFT需要次復(fù)數(shù)乘法與N(N-1)次復(fù)數(shù)加法運算,直接計算DFT與DIT-FFT的復(fù)數(shù)乘法運算量之比為: (3.2.3)3.3 DIT-FFT算法的特點 1. 原

24、位運算在DIT-FFT的蝶形圖中,取第m級且兩輸入節(jié)點分別在第k、j行的蝶形為例,討論DIT-FFT的原位運算規(guī)律。如圖3.6所示,蝶形運算的關(guān)系式可表示為: (3.2.4) 從式中可以看出,第m級蝶形第k行與第j行的輸出,只與第m-1級的第k行與第j行的輸出有關(guān),換言之,第m-1級的第k行與第j行的輸出與在運算流圖中的作用就是用來計算第m級的第k行與第j行的輸出與。這樣當(dāng)計算完與后,與在運算流圖不再起作用,因此就可以把與直接存放在原來存放與的存儲單元中。同理,可以把第m級蝶形的N個輸出值直接存放在第m-1級蝶形輸出的N個存儲單元中,這樣從第一級的輸入x(n)開始,到最后一級輸出X(k),只需

25、要N個存儲單元。 -1圖3.6 按時間抽取蝶形運算結(jié)構(gòu) 2. 倒序規(guī)律從圖3.5可以看出,按原位計算時,蝶形圖的輸出正好是自然順序X(0),X(1),.,X(7),但是輸入?yún)s不是自然順序,而是x(0),x(4),x(6).,表面看起來好像是“混亂無序”的,實際上是有規(guī)律的,即倒序的排列方法。 倒序的形成原因是FFT不斷對序列進(jìn)行奇偶分組造成的,重新排列了序列的存放順序,因此它是按碼位倒置順序排放的。由于N=2M,所以倒序數(shù)可用M位二進(jìn)制數(shù)表示。第一次分組,按的0和1分成奇偶兩組,=0相當(dāng)是偶序列,=1相當(dāng)是奇序列。第二次分組按的0和1分成兩組依次類推,直到M次分組。 0 0 1 0

26、0 1 1 0 0 1 1 0 1 1圖3.7 倒序形成的樹狀結(jié)構(gòu)3.  蝶形運算兩節(jié)點之間的“距離” 從圖3.5可以看出,第一級蝶形每個蝶形運算兩節(jié)點之間的“距離”為1,第二級每個蝶形運算兩節(jié)點之間的“距離”為2,第三級蝶形每個蝶形運算兩節(jié)點之間的“距離”為4。依次類推,對于的DIT-FFT,可以得到第M級蝶形每一個蝶形運算兩節(jié)點之間的“距離”為。  4.  旋轉(zhuǎn)因子的變化規(guī)律  以圖3.5的8點FFT為例,每一級的每一個蝶形運算都要乘以一個旋轉(zhuǎn)因子,r是旋轉(zhuǎn)因子的指數(shù)。在第一級蝶形,r=0;在第二級蝶形,r=0,1;在第三級的蝶形

27、,r=0,1,2,3;依次類推,對于第M級蝶形,旋轉(zhuǎn)因子的指數(shù)為 : 這樣就可以算出每一級的旋轉(zhuǎn)因子。對于M級的任一蝶形運算所對應(yīng)的旋轉(zhuǎn)因子的指數(shù),可以 如下方法得到:(1) 將待求的蝶形輸入節(jié)點中上面節(jié)點的行標(biāo)號值k寫成L位二進(jìn)制數(shù);(2) 將此二進(jìn)制數(shù)乘以,即將L位二進(jìn)制數(shù)左移L-M位,右邊的空位補零,然后從低位到高位截取L位,即得到要求的指數(shù)r所對應(yīng)的二進(jìn)制數(shù)。3.4 N=16時的DIT-FFT算法先將序列x(n)奇偶分組得: r=0,1,2,.,7 (3.4.1) 將DFT運算也分為兩組: (3.4.2)其中與分別是與的8點DFT,即: (3.4.3)這樣,一個16

28、點的DFT就被分解為兩個8點的DFT,即: ,k=0,1,2,.,7 (3.4.4)對兩個8點的DFT再分別做進(jìn)一步分解,每個8點的DFT分解成兩個4點的DFT,即: ,k=0,1,2,.,7 (3.4.5)對四個4點的DFT再分別做進(jìn)一步分解,每個4點的DFT分解成兩個2點的DFT,即: ,k=0,1,2,.,7 (3.4.6)所以,N=16點的DFT最終可以分解成8個2點的DFT。4 MATLAB程序代碼4.1 N=8點DIT-FFT代碼 根據(jù)蝶形圖一級一級依次分解,可以把一個完整的8點的DFT分解成4個兩點的DFT進(jìn)行運算。 function y=fft8(x) %定義根據(jù)蝶形圖計算8點

29、DIT-FFT的函數(shù) Wn=exp(-j*2*pi/8); %定義旋轉(zhuǎn)因子計算公式 x1(1)=x(1)+x(5); %計算第一級蝶形圖輸出 x1(2)=x(1)-x(5); % x1(3)=x(3)+x(7); % x1(4)=x(3)-x(7); % x1(5)=x(2)+x(6); % x1(6)=x(2)-x(6); % x1(7)=x(4)+x(8); % x1(8)=x(4)-x(8); % x2(1)=x1(1)+x1(3); %計算第二級蝶形圖輸出 x2(2)=x1(2)+x1(4)*(Wn.2); % x2(3)=x1(1)-x1(3); % x2(4)=x1(2)-x1(4

30、)*(Wn.2); % x2(5)=x1(5)+x1(7); % x2(6)=x1(6)+x1(8)*(Wn.2); % x2(7)=x1(5)-x1(7); % x2(8)=x1(6)-x1(8)*(Wn.2); % y(1)=x2(1)+x2(5); %計算第三級蝶形圖輸出 y(2)=x2(2)+x2(6)*(Wn.1); % y(3)=x2(3)+x2(7)*(Wn.2); % y(4)=x2(4)+x2(8)*(Wn.3); % y(5)=x2(1)-x2(5); % y(6)=x2(2)-x2(6)*(Wn.1); % y(7)=x2(3)-x2(7)*(Wn.2); % y(8)=

31、x2(4)-x2(8)*(Wn.3); % 4.2 N=16點DIT-FFT代碼 調(diào)用計算N=8點時編寫的函數(shù)fft8來實現(xiàn)N=16點的DIT-FFT運算。可以先將N=16點的DFT根據(jù)奇偶分解成兩個8點的DFT,然后再分別用函數(shù)fft8對這兩組8點的DFT進(jìn)行計算。 function y=fft16(x) %定義計算16點DIT-FFT的函數(shù) Wn=exp(-j*2*pi/16); %定義旋轉(zhuǎn)因子計算公式 y1=fft8(x(1:2:16); %計算偶數(shù)組的8點FFT y2=fft8(x(2:2:16); %計算奇數(shù)組的8點FFT y(1:8)=y1+y2.*(Wn.0:7); %計算前八個

32、點 y(9:16)=y1-y2.*(Wn.0:7); %計算后八個點5 MATLAB仿真結(jié)果及驗證5.1 DIT-FFT函數(shù)調(diào)試 1. 運行MATLAB,點擊file-new-function新建函數(shù)編輯窗,輸入N=8點DIT-FFT的代碼并保存為fft8.m。圖5.1 N=8點DIT-FFT函數(shù)調(diào)試 2. 運行MATLAB,點擊file-new-function新建函數(shù)編輯窗,輸入N=16點DIT-FFT的代碼并保存為fft16.m。圖5.2 N=16點DIT-FFT函數(shù)調(diào)試5.2 DIT-FFT函數(shù)運行結(jié)果 1. 在命令窗口輸入x=1 2 4 6 8 10 12 14 ; fft8(x)后

33、,按回車運行程序。圖5.3 N=8點DIT-FFT函數(shù)運行結(jié)果 2. 在命令窗口輸入x=1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30; fft16(x)后,按回車運行程序。圖5.4 N=16點DIT-FFT函數(shù)運行結(jié)果5.3調(diào)用系統(tǒng)函數(shù)驗證 1. 在命令窗輸入x=1 2 4 6 8 10 12 14 ; fft(x) 后按回車,通過調(diào)用系統(tǒng)函數(shù)FFT計算8點FFT,計算結(jié)果與上面一致,結(jié)果如下:圖5.5 調(diào)用系統(tǒng)函數(shù)驗證N=8點DIT-FFT 2. 在命令窗輸入x=1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30; f

34、ft(x) 后按回車,通過調(diào)用系統(tǒng)函數(shù)FFT計算8點FFT,計算結(jié)果與上面一致,結(jié)果如下:圖5.6 調(diào)用系統(tǒng)函數(shù)驗證N=16點DIT-FFT 經(jīng)過調(diào)用MATLAB系統(tǒng)自帶函數(shù)的驗證,所編寫的程序運行的結(jié)果與系統(tǒng)自帶函數(shù)運行的結(jié)果一致,可以實現(xiàn)8點和16點的按時間抽取的基2-FFT運算。6 心得體會 通過此次課程設(shè)計,鞏固了我在數(shù)字信號處理原理與實現(xiàn)課堂上所學(xué)的關(guān)于快速傅里葉變換的相關(guān)知識,加深了對課堂抽象概念的理解,鞏固了課堂上所學(xué)的理論知識,并能很好地理解與掌握數(shù)字信號處理中的基本概念、基本原理、基本分析方法。設(shè)計過程中,學(xué)習(xí)了許多數(shù)字信號處理課程中關(guān)于數(shù)字濾波器的設(shè)計的內(nèi)容。同時掌握編程方

35、法和解決實際問題的技巧。與其他高級語言的程序設(shè)計相比,MATLAB環(huán)境下更方便、快捷,節(jié)省大量的編程時間,提高編程效率,且參數(shù)的修改也十分方便,還可以進(jìn)一步進(jìn)行優(yōu)化設(shè)計。此外,在此次數(shù)字信號處理原理與實現(xiàn)課程設(shè)計中,通過查閱資料、請教同學(xué)等途徑,在摸索中不僅完成了教學(xué)任務(wù),還對MATLAB這個強大的仿真軟件有了一定的認(rèn)識。在完成了此次課設(shè)之后,掌握了自己的基礎(chǔ)理論知識,提高了學(xué)習(xí)能力和基本動手能力,同時掌握了基本的文獻(xiàn)檢索和材料閱讀的方法,提高了我們的基本素質(zhì)。培養(yǎng)了我們獨立思考和解題的能力,樹立了對所學(xué)知識運用的信心,這些必將在我們今后的學(xué)習(xí)工作和生活中起到非常大的幫助。 總之這次課設(shè)使我受益匪淺,讓我學(xué)到了很多東西。盡管此次課程設(shè)計完成的效果并非很好,但是我覺得在設(shè)計過程中所學(xué)到的東西才是此次經(jīng)歷的最大收獲和財

溫馨提示

  • 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

提交評論