數(shù)字信號處理課設-- 基于重疊保留法圓周卷積的實現(xiàn)_第1頁
數(shù)字信號處理課設-- 基于重疊保留法圓周卷積的實現(xiàn)_第2頁
數(shù)字信號處理課設-- 基于重疊保留法圓周卷積的實現(xiàn)_第3頁
數(shù)字信號處理課設-- 基于重疊保留法圓周卷積的實現(xiàn)_第4頁
數(shù)字信號處理課設-- 基于重疊保留法圓周卷積的實現(xiàn)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學信號分析與處理課程設計說明書學 號: 0121309341830課 程 設 計課程名稱信號分析與處理課程設計基于重疊保留法圓周卷積的實現(xiàn)學 院信息工程學院專 業(yè)電子信息工程班 級電信1301班姓 名秦子越指導教師 吳巍20152016學年 第1學期課程設計任務書學生姓名: 秦子越 專業(yè)班級: 電信1301 指導教師: 吳巍 工作單位: 信息工程學院 題 目:基于重疊保留法圓周卷積的實現(xiàn)初始條件: 具備數(shù)字信號處理的理論知識;具備Matlab編程能力;分析重疊保留法的圓周卷積的原理;提供編程所需要的計算機一臺要求完成的主要任務:(包括課程設計工作量及其技術(shù)要求,以及說明書撰寫等具體要

2、求)1、獨立編寫程序?qū)崿F(xiàn)基于重疊保留法的圓周卷積2、用Matlab驗證程序結(jié)果,并分析重疊保留法的圓周卷積的原理3、完成符合學校要求的設計說明書時間安排:一周,其中3天程序設計,2天程序調(diào)試指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日目 錄摘要1Abstract21.緒論32.理論知識52.1 圓周卷積的定義52.2 圓周卷積的運算52.3 重疊保留法原理63.程序代碼實現(xiàn)73.1 程序流程分析73.2 程序代碼設計94.用Matlab驗證程序結(jié)果115.原理分析146.心得體會15參考文獻16附錄17本科生課程設計成績評定表19摘要MATLAB(矩陣實驗室)是MATrix

3、 LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業(yè)數(shù)學軟件。MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境。本文用MATLAB實現(xiàn)基于重疊保留法的圓周卷積。若x1(n)是很長的序列,利用圓周卷積時,x2(n)必須補很多零點,很不經(jīng)濟。因此必須將x1(n)分成和x2(n)相仿的段,分別求出每段的卷積結(jié)果,然后用一定的方式把他們合在一起,從而得到總的輸出。為了克服重疊相加法中分段卷積后,仍然需要相加的缺點,人們提出了重疊保留法。關(guān)鍵字:MATLAB 重疊保留法 圓周卷積AbstractMATLAB (MATr

4、ix LABoratory) is The abbreviation of MATrix LABoratory, is a by The United States The MathWorks company production of a commercial mathematical software. MATLAB is a kin

5、d of for algorithm development, data visualization, data analysis and numerical calculation of senior technical computing language and interactive environment. In this paper, based 

6、;on MATLAB overlap reserves the circular convolution method. If x1 (n) is a very long sequence, using circular convolution, x2 (n) must fill a lot of zero, is n

7、ot the economy. So must be x1 (n) into and x2 (n) segment, the convolution results of each, respectively, and then in a certain way put them together, and 

8、the total output is obtained.  In order to overcome overlapadding after subsection convolution method, still need to add the shortcomings, overlap retaining method are put for

9、ward. Key words: MATLAB  overlap method   circular convolution 1.緒論MATLAB(矩陣實驗室)是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業(yè)數(shù)學軟件。MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境。除了矩陣運算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB還可以用來創(chuàng)建用戶界面及與調(diào)用其它語言(包括C,C+和FORTRAN)編寫的程序。MATLAB的基本數(shù)據(jù)單位是矩陣,它的

10、指令表達式與數(shù)學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數(shù)學軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C+,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實用程序?qū)氲組ATLAB函數(shù)庫中方便自己以后調(diào)用,此外許多的MATLAB愛好者都編寫了一些經(jīng)典的程序,用戶可以直接進行下載就可以用。軟件特點:1) 高效的數(shù)值計算及符號計算功能,能使用戶從繁雜的數(shù)學運算分析中解脫出來;2) 具有完備的圖形處理功能,實現(xiàn)計算結(jié)果和編程的可視化;3) 友好

11、的用戶界面及接近數(shù)學表達式的自然化語言,使學者易于學習和掌握;4) 功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。MATLAB 產(chǎn)品族可以用來進行以下各種工作:數(shù)值分析 數(shù)值和符號計算 工程與科學繪圖 控制系統(tǒng)的設計與仿真 數(shù)字圖像處理技術(shù)數(shù)字信號處理技術(shù)通訊系統(tǒng)設計與仿真 財務與金融工程管理與調(diào)度優(yōu)化計算(運籌學) MATLAB 的應用范圍非常廣,包括信號和圖像處理、通訊、控制系統(tǒng)設計、測試和測量、財務建模和分析以及計算生物學等眾多應用領(lǐng)域。附加的工具箱(單獨提供的專用MATLAB 函數(shù)集)擴展

12、了MATLAB 環(huán)境,以解決這些應用領(lǐng)域內(nèi)特定類型的問題。軟件優(yōu)勢:1.編程環(huán)境MATLAB由一系列工具組成。這些工具方便用戶使用MATLAB的函數(shù)和文件,其中許多工具采用的是圖形用戶界面。包括MATLAB桌面和命令窗口、歷史命令窗口、編輯器和調(diào)試器、路徑搜索和用于用戶瀏覽幫助、工作空間、文件的瀏覽器。2.簡單易用3.強處理能力MATLAB是一個包含大量計算算法的集合。其擁有600多個工程中要用到的數(shù)學運算函數(shù),可以方便的實現(xiàn)用戶所需的各種計算功能。函數(shù)中所使用的算法都是科研和工程計算中的最新研究成果,而且經(jīng)過了各種優(yōu)化和容錯處理。在通常情況下,可以用它來代替底層編程語言,如C和C+ 。4.圖

13、形處理MATLAB自產(chǎn)生之日起就具有方便的數(shù)據(jù)可視化功能,以將向量和矩陣用圖形表現(xiàn)出來,并且可以對圖形進行標注和打印。高層次的作圖包括二維和三維的可視化、圖象處理、動畫和表達式作圖??捎糜诳茖W計算和工程繪圖。新版本的MATLAB對整個圖形處理功能作了很大的改進和完善,使它在一般數(shù)據(jù)可視化軟件都具有的功能(例如二維曲線和三維曲面的繪制和處理等)方面更加完善。5.程序接口和發(fā)布平臺MATLAB的一個重要特色就是具有一套程序擴展系統(tǒng)和一組稱之為工具箱的特殊應用子程序。工具箱是MATLAB函數(shù)的子程序庫,每一個工具箱都是為某一類學科專業(yè)和應用而定制的,主要包括信號處理、控制系統(tǒng)、神經(jīng)網(wǎng)絡、模糊邏輯、小

14、波分析和系統(tǒng)仿真等方面的應用。2.理論知識2.1 圓周卷積的定義設x1(n)和x2(n)為長度為N的有限長序列,且 DFTx1n=X1k (2.1) DFTx2n=X2k (2.2)如果Y(k)=X1(k)X2(k),則 yn=IDFTYK=m=0N-1 x2m x1n-mNRNn (2.3)證明:相當于將x1(n),x2(n)作周期卷積和后,再取主值序列。將y(k)周期延拓:Y(k)= X1(k) X2(k),則有:ùêëé-=-= - yn=IDFTYK =m=0N-1 x1(m)x2(n-m) =m=0N-1(x1(m)Nx2(n-m)N (2.4

15、)在主值區(qū)間0mN-1,x1(m)N=x1m,所以: y(n)= ynRN(n) = m=0N-1 x1m x2n-mN RNn (2.5)同樣可以證明: y(n)= m=0N-1 x2m x1n-mN RNnû (2.6)定義式2.3為序列與x1(n)與 x2(n)的圓周卷積,習慣表示為()()y(n)=x1(n)x2(n)= (2.7)從以上的證明過程也可以得出圓周卷積與周期卷積之間的關(guān)系,即有限長序列圓周卷積結(jié)果的周期延拓等于它們周期延拓后的周期卷積。也就是說,周期卷積的主值序列是各周期序列主值序列的圓周卷積。2.2 圓周卷積的運算圓周卷積的具體步驟為:第一步:在啞元坐標上畫出

16、x1(m)與x2(m);第二步:把x2(m)沿著縱坐標翻轉(zhuǎn),得到x2(-m);第三步:對x2(-m)做圓周移位,得 x2(n-m)N RNn;第四步:x1(m)與 x2(n-m)N RNn對應的相同m的值進行相乘,并把結(jié)果進行相加得到的對應于自變量n的另一個y(n);第五步:換另一個n,重復第三、四步,直到n取遍0,N-1中的所有值,得到完整的y(n)。2.3 重疊保留法原理討論一個短的有限長序列與一個無限長序列的卷積,例如x1(n)是很長的序列,利用圓周卷積時,x2(n)必須補很多零點,很不經(jīng)濟。因此必須將x1(n)分成和x2(n)相仿的段,分別求出每段的卷積結(jié)果,然后用一定的方式把他們合在

17、一起,從而得到總的輸出。為了克服重疊相加法中分段卷積后,仍然需要相加的缺點,人們提出了重疊保留法。與重疊相加法不同的是,對無限長序列x1(n)進行分段時,前一分段x1k(n)的后M-1個樣值與后一份段的x1(k+1)(n)的前M-1個抽樣值相同,且分段的長度選圓周卷積的長度L,這樣形成的分段序列x1kn=xn-kN+m-1,0nL-10,其他 (2.8) 然后計算x2(n)與各分段x1k(n)之間的卷積ykn=x2n*x1k(n),顯然,ykn的前M-1個值發(fā)生了混疊,不等于x2n與x1k(n)的卷積。把ykn的前M-1個值舍去,保留ykn沒有發(fā)生混疊的后N個值,形成序列ykn=ykn,M-1

18、nL-1, ykn=0,其他。最后輸出序列yn=k=-+ykn-kN+m-1 (2.9) 3.程序代碼實現(xiàn)3.1 程序流程分析要實現(xiàn)基于重疊保留法的圓周卷積,假設有兩個長度分別為N,M(N>M)的序列x1(n) ,x2(n),要求做x1(n)和x2(n)的圓周卷積。首先要對長序列序列x1(n)進行分段,分段的長度選圓周卷積的長度L,形成的分段序列:x1kn=xn-kN+m-1,0nL-10,其他 (3.1)然后將x2n逐一和各分段x1kn進行圓周卷積,得到y(tǒng)kn=x2nx1kn=m=0L-1x2(m) x1(n-m)L RLn (3.2)最后輸出序列 yn=k=-+ykn-kN+m-1

19、(3.3)這樣即完成了基于重疊保留法的圓周卷積的實現(xiàn)。其流程圖如下:開始分別輸入序列x1n,x2n,圓周卷積的長度L計算x1n和x2n的長度N和M將x1n以長度進行分段,得到x1kn將x2n和x1kn進行卷積得到y(tǒng)kn去掉ykn的前M-1個值輸出yn=k=-+ykn-kN+m-1結(jié)束3.2 程序代碼設計首先編寫基于重疊保留法的圓周卷積的主函數(shù)。這個主函數(shù)的功能應當是計算出兩個序列xn和hn的長度N、M,將長序列進行分段,然后再將短序列和長序列的各個分段分別進行圓周卷積,將分段卷積的的結(jié)果序列的前M-1個值舍去,將各個結(jié)果合并到一個序列中去,輸出這個新序列,程序功能基本完成。主函數(shù)的編寫過程如下

20、定義主函數(shù):function yn = dupconv( xn,hn )計算兩個序列的長度:M=length(hn); N=length(xn);將長序列按照重疊保留法進行分段, 將其平均分成4段則每段表示為:xn1=zeros(1,M-1),xn(1:floor(N/4); xn2=xn(floor(N/4)-M+2):floor(N/2); xn3=xn(floor(N/2)-M+2):floor(N*3/4); xn4=xn(floor(N*3/4)-M+2):N);將短序列和長序列的各分段進行圓周卷積,這里是通過調(diào)用圓周卷積函數(shù)實現(xiàn)的,圓周卷積函數(shù)將在后面定義出。代碼如下:n1=len

21、gth(xn1); n2=length(xn2); n3=length(xn3); n4=length(xn4); yn1=timecirconv(xn1,hn,n1); yn2=timecirconv(xn2,hn,n2); yn3=timecirconv(xn3,hn,n3); yn4=timecirconv(xn4,hn,n4);將分段圓周卷積的結(jié)果序列舍去前M-1個值,yn1=yn1(M:n1); yn2=yn2(M:n2); yn3=yn3(M:n3); yn4=yn4(M:n4);將各個分段序列按順序合起來, yn=yn1 yn2 yn3 yn4;函數(shù)結(jié)束, end由于圓

22、周卷積是通過調(diào)用圓周卷積函數(shù)來實現(xiàn)的,所以現(xiàn)在要編寫一個能實現(xiàn)圓周卷積功能的函數(shù)。將函數(shù)名命名為timecirconv,代碼如下:定義圓周卷積函數(shù):function yn = timecirconv( xn,hn,N )計算兩序列的長度,并和N進行比較,如果N小于兩個序列的長,則輸出錯誤:len1=length(xn);len2=length(hn); if len1>N | len2>Nerror('N must biger than length of xn and hn') end將兩個序列延長成長度為N的序列,不足的補零:xn=xn zeros(1,N-le

23、n1); hn=hn zeros(1,N-len2);將hn進行沿縱坐標翻轉(zhuǎn)后進行圓周移位,并將其存入一個N行N列的矩陣x中m=0:N-1; x=zeros(N,N); for n=0:N-1 x(n+1,:)=hn(mod(n-m),N)+1);end 將xn和矩陣x相乘,最終的得到圓周卷積的結(jié)果:yn=xn*x; 4.用Matlab驗證程序結(jié)果假設有這樣的兩個序列,序列1x1n=n(0n15),序列2x2n=n+1,(0n3)要求這兩個序列基于重疊保留法的的圓周卷積。分析知序列1長度N=16,序列2長度M=4。將長序列分段:x11=0 0 0 0 1 2 3 x12=1 2 3

24、4 5 6 7x13=5 6 7 8 9 10 11 x14=9 10 11 12 13 14 15 將x1的各分段和x2=1 2 3 4 0 0 0進行圓周卷積,得到 Y11=x11x2=0 4 11 20 14 8 3 Y12=x12x2=30 40 50 60 42 31 27 Y13=x13x2=70 80 90 100 82 71 67 Y14=x14x2=110 120 130 140 122 111 107將每個分段卷積后的序列的前4-1個值舍去,再按順序?qū)⑿蛄泻喜ⅲ玫叫蛄校簓n=20 14 8&#

25、160;3 60 42 31 27 00 82 71 67 140 122 111 107下面用程序來驗證。在MATLAB中輸入代碼,建立.m文件,輸入主函數(shù)dupconv,并調(diào)用子函數(shù)timecirconv計算卷積。圖4.1 主函數(shù)代碼圖4.2 子函數(shù)代碼在comand window中輸入>> xn=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;>> hn=1,2,3,4;>> yn = dupco

26、nv( xn,hn )圖4.3 輸入?yún)?shù)得到的結(jié)果為:yn=20 14 8 3 60 42 31 27 100 82 71 67 140 122 111 107圖4.4 輸出結(jié)果顯然,計算結(jié)果和程序運行結(jié)果相同。仿真正確。5.原理分析對于一個長序列x1n和一個短序列x2n,長度分別為N,M,圓周卷積的長度為L,在長序列的前面加上M-1個零,然后對長序列進行分段,使得每段的長度為L,不足的用零補。且前一分段的后M-1個抽樣值和后一分段的前M-1個抽

27、樣值相同。這樣形成的分段序列為:x1kn=xn-kN+m-1,0nL-10,其他 (5.1)分成的段數(shù)為:k=N+M-2L+1 (5.2)然后計算x2n與各個分段之間的圓周卷積,ykn=x2nx1kn (5.3)ykn=ykn,M-1nL-10,其他 (5.4)顯然,ykn的前M-1個值發(fā)生了混疊,不等于x2n與x1kn 的圓周卷積,把ykn的前M-1個值舍去,保留沒發(fā)生混疊后的后N個值,形成序列yk(n)=ykn,M-1nL-10,其他 (5.5)最后將各段相加就可以得到最終的結(jié)果:yn=k=-+ykn-kN+m-1 (5.6)6.心得體會在本次課程設計中,讓我知道了以前所學信號與系統(tǒng)與數(shù)字

28、信號處理的結(jié)合,同時我也充分認識到MATLAB的強大作用。MATLAB它是日前工程界流行最廣的科學計算語言,在電信工程中的電路、信號與系統(tǒng)、數(shù)字信號處理、自動控制等方面有著廣泛的應用。除此之外,對程序的編譯不是一蹴而就的,而是經(jīng)過多次的編譯與調(diào)試。以前用MATLAB就是簡單的輸入,可以說都不是自己的勞動成果,但這次不一樣,課程設計沒有別人給你編好,而是自己寫,出錯率就大大提高了,但這是過程,學習就是在過程中進行的,經(jīng)過自己幾天的腦力勞動,再加上同學們的幫助,不僅對讀程序有了很大提高,而且自己的編譯水平也上了一個新臺階,更加熟系了MATLAB的應用,也對其中的函數(shù)如zeros()、floor()

29、等有了更深的理解,也學會了對子函數(shù)的調(diào)用。在課程設計過程中,我們不斷發(fā)現(xiàn)錯誤,不斷改正,不斷領(lǐng)悟,這次課程設計終于順利完成了。在今后社會的發(fā)展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,收獲喜悅。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。 參考文獻1羅建軍.MATLAB教程.北京:電子工業(yè)出版社 20052陳懷深.MATLAB在信息工程中的應用.北京:電子工業(yè)出版社 20033丁玉美,高西全編著數(shù)字信號處理.西安

溫馨提示

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

評論

0/150

提交評論