序列的卷積和快速卷積運算的編程實現_第1頁
序列的卷積和快速卷積運算的編程實現_第2頁
序列的卷積和快速卷積運算的編程實現_第3頁
序列的卷積和快速卷積運算的編程實現_第4頁
序列的卷積和快速卷積運算的編程實現_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

..1.MATLAB簡介MATLAB軟件由美國MathWorks公司于1984年推出,經過不斷的發展和完善,如今己成為覆蓋多個學科的國際公認的最優秀的數值計算仿真軟件。MATLAB具備強大的數值計算能力,許多復雜的計算問題只需短短幾行代碼就可在MATLAB中實現。作為一個跨平臺的軟件,MATLAB已推出Unix、Windows、Linux和Mac等十多種操作系統下的版本,大大方便了在不同操作系統平臺下的研究工作。MATLAB軟件具有很強的開放性和適應性。在保持內核不變的情況下,MATLAB可以針對不同的應用學科推出相應的工具箱<toolbox>,目前己經推出了圖象處理工具箱、信號處理工具箱、小波工具箱、神經網絡工具箱以及通信工具箱等多個學科的專用工具箱,極大地方便了不同學科的研究工作。國內已有越來越多的科研和技術人員認識到MATLAB的強大作用,并在不同的領域內使用MATLAB來快速實現科研構想和提高工作效率。MATLAB提供了20類圖像處理函數,涵蓋了圖像處理的包括近期研究成果在內的幾乎所有的技術方法,是學習和研究圖像處理的人員難得的寶貴資料和加工工具箱。這些函數按其功能可分為:圖像顯示;圖像文件I/O;圖像算術運算;幾何變換;圖像登記;像素值與統計;圖像分析;圖像增強;線性濾波;線性二元濾波設計;圖像去模糊;圖像變換;鄰域與塊處理;灰度與二值圖像的形態學運算;結構元素創建與處理;基于邊緣的處理;色彩映射表操作;色彩空間變換;圖像類型與類型轉換。MATLAB的應用領域十分廣闊,典型的應用舉例如下:<1>數據分析<2>數值與符號計算;<3>工程與科學繪圖;4>控制系統設計;<5>航天工業;<6>汽車工業;<7>生物醫學工程;8>語音處理;<9>圖像與數字信號處理;<10>財務、金融分析;<11>建模、仿真及樣機開發;<12>新算法研究開發;13>圖形用戶界面設計MATLAB的應用范圍非常廣,包括信號和圖像處理、通訊、控制系統設計、測試和測量、財務建模和分析以及計算生物學等眾多應用領域。附加的工具箱〔單獨提供的專用MATLAB函數集擴展了MATLAB環境,以解決這些應用領域內特定類型的問題。它的主要特點是:〔1Matlab可以用來解線性方程組、進行矩陣變換與運算、數據插值運算等,能使用戶從繁雜的數學運算分析中解脫出來。〔2Matlab中有許多高級的繪圖函數,包括二維、三維、專用圖形函數、圖形句柄、用戶圖形界面工具等,利用這些函數可以輕松地完成各種圖形的繪制和編輯工作,實現計算結果和編程的可視化。〔3友好的用戶界面及接近數學表達式的自然化語言,使學習者易于學習和掌握?!?功能豐富的應用工具箱<如信號處理工具箱,通信工具箱,控制系統工具箱等>為用戶提供了大量方便實用的處理工具。Matlab的上述特點,使它深受工程技術人員及科技專家的歡迎,并很快成為應用學科計算機輔助分析、設計、仿真、教學等領域不可缺少的基礎軟件。目前,國內很多理工院校已經或者正在把該軟件作為學生必須掌握的一種軟件。2.項目設計目的及技術要求序列的卷積和快速卷積運算的編程實現,具體包括:直接卷積及運用、快速卷積方法及實現、二者的比較分析等。1. 已知線性非移變系統的h<n>=[6,2,3,6,4,2],輸入為x<n>=[1,2,3,4,5];〔1 用人工計算系統輸出y<n>;〔2 編寫程序輸出y<n>,并作圖。2. 用函數conv和FFT計算長為1000序列的卷積,比較其計算時間。3. 用快速卷積法計算和兩個序列的卷積;并測試直接卷積和快速卷積的時間。3.基本原理3.1基本概念在數字信號處理<DSP>系統中,無論在時域或頻域都離不開卷積運算和快速傅里葉<FFT>運算。Matlab具有強大的矩陣運算能力,方便實用的繪圖功能和語言的高度集成性,在DSP開發中,使用Matlab可以快速對系統進行仿真運算。設輸入信號為x<t>,其頻譜函數為X<jΩ>,該信號通過濾波器h<t>后,其輸出信號y<t>的頻譜函數Y<jΩ>是頻譜函數x<jΩ>與濾波器的頻譜函數H<jΩ>的乘積,即:而在時域,輸出信號y<t>實際是輸入信號x<t>與濾波器h<t>的卷積。就是說頻譜函數的乘積相當于時間函數的卷積,反之亦然。即:由于DSP主要依靠計算機完成,而計算機無論在時域或頻域只能處理有限長的離散信號,因此上述關系可表示為:式中:n表示離散時間;數字頻率ω=ΩT;f為輸入信號頻率;f,T為抽樣頻率和周期。3.2原理分析可以使用線性卷積、圓周卷積實現離散卷積,也可以根據時域信號函數與頻譜函數的關系,使用快速傅里葉變換<FFT,IFFT>實現離散卷積。3.2.1離散傅里葉變換〔DFT和快速傅里葉變換〔FFT離散傅里葉變換,是連續傅里葉變換在時域和頻域上都離散的形式,將時域信號的采樣變換為在離散時間傅里葉變換頻域的采樣。在形式上,變換兩端〔時域和頻域上的序列是有限長的,而實際上這兩組序列都應當被認為是離散周期信號的主值序列。即使對有限長的離散信號作DFT,也應當將其看作經過周期延拓成為周期信號在做變換。在實際應用中通常采用快速傅里葉變換〔FFT高效計算DFT。采用這種算法能使計算機計算離散傅里葉變換所需要的乘法次數大為減少,特別是被變換的抽樣點數N越多,FFT算法計算量的節省就越顯著。3.2.2序列的卷積和快速卷積運算卷積是數字信號處理中最常見的,也是最重要的運算之一。利用卷積可以實現相關計算和FIR濾波等等,正因為卷積如此重要,所以半個世紀以來,學者們提出了多種不同卷積實現結構,這些結構各有優點,針對不同應用可以靈活選擇,而其中快速卷積無疑是重要的卷積方法之一。顧名思義,快速卷積重點在一個"快",如果對卷積速度要求較高,快速卷積無疑是理想的工具。當然,為了提高速度,就要犧牲面積和功耗。3.2.3快速傅里葉變換和快速卷積在此,我們是利用快速傅里葉變換實現快速卷積運算。同時在進行Matlab編程時也是利用快速傅里葉變換來得到快速卷積的結果。4.程序設計及仿真結果分析4.1題目一長度為m的向量序列h和長度為n的向量序列x,卷積w的向量序列長度為<m+n-1>,當m≠n時,應以0補齊階次低的向量的高位后進行計算y<1>=h1>*x<1>y<2>=h<1>*x<2>+h<2>*x<1>y<3>=h<1>*x<3>+h<2>*x<2>+h<3>*x<1>=…y<n>=h<1>*x<n>+h<2>*x<n-1>+…+h<n>*x<1>…y<m+n-1>=h<1>*x<m+n-1>+h<2>*x<m+n>+h<3>*x<m+n+1>+…+h<m+n-1>*x<1>那么所得的結果就是y〔n=[6,14,25,42,63,50,55,52,28,10]用matlab仿真編程程序如下:h=[6,2,3,6,4,2];x=[1,2,3,4,5];y=conv<h,x>;stem<y>圖4.1系統輸出函數y<n>由圖4.1可和自己求出的y<n>函數相比較可以得到,用matlab編寫程序得出的系統輸出函數與自己人工計算的結果相同。4.2題目二在matlab實現卷積的.函數為CONV,對于N值較小的向量,這是十分有效的。對于N值較大的向量卷積可用FFT加快計算速度。若DFT和IDFT均采用FFT和IDFT算法,可提高卷積速度。計算x1<n>和x2<n>的線性卷積的FFT算法可由下面步驟實現:1、 計算X1<k>=FFT[x1<n>];2、 計算X2<k>=FFT[x2<n>];3、 Y<k>=X1<k>·X2<k>;4、 計算x1<n>*x2<n>=IFFT[Y<k>]在本題目中計算的兩個函數分別是x1<n>=2*n,x2<n>=3.^n。用matlab編寫的完整程序如下所示L=1000;N=L*2-1;n=1:L;x1=2*n;x2=3.^n;t0=clock;yc=conv<x1,x2>;conv_time=etime<clock,t0>t0=clock;yf=ifft<fft<x1,N>.*fft<x2,N>>;fft_time=etime<clock,t0>反正結果如下:圖4.2由結果可知,長度為1000時,快速卷積所用時間較少。4.3題目三利用快速卷積原理求兩個函數的卷積可以用題目二中所用的方法〔先分別對兩個函數求傅里葉變換得到X<k>與H<k>,再兩個函數傅里葉變換的點乘的結果y<k>,最后直接對y<k>求傅里葉反變換得到y<n>快速卷積,得到所要求的結果。因為在這次題目中與兩個函數中M與N沒有給出,取M=2000,N=1800時。所用的程序以及各自的輸出結果如下所示:xn=0.9.^<1:20>;hn=1.^<1:16>;tic;yn=conv<xn,hn>;toc;L=pow2<nextpow2<20+16-1>>;ticxk=fft<xn,L>;hk=fft<hn,L>;yk=xk.*hk;yn=ifft<yk,L>;toc;subplot<221>,stem<xn,'.'>;ylabel<'x<n>'>;subplot<222>,stem<hn,'.'>;ylabel<'h<n>'>;subplot<212>,ny=1:L;stem<real<yn>,'.'>;ylabel<'y<n>'>;仿真結果如圖4.3:圖4.3由仿真結果可知,當點數較大時,快速卷積所用時間明顯少于普通卷積。5.心得體會這次課程設計我做的是序列的卷積和快速卷積運算的編程實現,是利用MATLAB這個軟件完成的,因為之前我們曾做MATLAB課設,平時使用MATLAB也比較多,所以這次課設做起來也相對比較簡單。但是,即使這個比較簡單,也要認真對待。MATLAB功能強大,尤其對于我們電子信息類的學生尤其重要,平時用到的機會比較多,認真學好很有必要。完成這次課程設計我認為收獲還是很多的,不但進一步掌握了數字信號處理的基礎知識及一門專業仿真軟件的基本操作,還提高了自己的設計能力及動手能力,同時對于模擬濾波器來了個系統的總結。更多的是讓我看清了自己,明白了凡事需要耐心,實踐是檢驗學習的唯一標準。理論知識的不足在這次課設中表現的很明顯。這將有助于我今后的學習,端正自己的學習態度,從而更加努力的學習。只有這樣我們才能真正的去掌握它,而不是只懂得一點皮毛。在做的課程中,也曾遇到一些小問題,如在程序中兩個數之間點成和叉乘的使用沒區別好,所以我們應該認真對待每一個小細節,才能做好每件事,端正自己的態度,不要因為簡單而不上心。這次課設還加深自己對知識的理解,對序列的卷積和快速卷積理解更加透徹,從理論到實踐。只有都經過,知識才能更加牢固。紙上得來終覺淺,絕知此事要躬行。前人已經總結的很好,我們只有在實踐中發現自己的問題,然后不斷的克服,才能把知識變成自己的,更加好的鍛煉

溫馨提示

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

評論

0/150

提交評論