圓周卷積的積分算法_第1頁
圓周卷積的積分算法_第2頁
圓周卷積的積分算法_第3頁
圓周卷積的積分算法_第4頁
圓周卷積的積分算法_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2 圓周卷積原理2.1 圓周卷積定義有兩個有限長序列和。設和的長度分別為N1和N2,N=maxN1, N2。若、的離散付里葉變換分別為、,且有 =則 =IDFT =上式即為序列與的圓周卷積,習慣表示為 =。可以看出,圓周卷積和周期卷積過程一樣,只不過這里要取結果的主值序列。公式中的只在m=0到N-1范圍內取值,因而它就是圓周移位,所以這一卷積和稱為圓周卷積。圓周卷積與周期卷積之間的關系,就是有限長序列圓周卷積結果的周期延拓,等于它們周期延拓后的周期卷積。換句話說,周期卷積的主值序列,是各周期序列主值序列的圓周卷積。周期卷積得到是周期序列,圓周卷積得到的是有限長序列,而且長度等于參加卷積的序列的

2、長度。2.2 圓周卷積計算過程具體步驟如下:(1) 在二元坐標上做出與;(2) 把沿著縱坐標翻轉,得到;(3) 對做圓周移位,得到;(4) 與對應相同的m的值進行相乘,并把結果相加,得到對應于自變量n的一個;(5) 換另一個n,重復以上兩步,直到n取遍0到N-1所有的值,得到完整的。3 重疊相加法原理實際應用中通常參加卷積的兩個序列的長度相差較大,這樣長度較小的就需要補很多0,就需要較大的存儲空間,運算時間也會變長,常用的辦法有重疊相加法和重疊保留法。本次設計采用重疊相加法。設x(n)為無限長序列,并假定xi(n)表示第i段x(n)序列: 則輸入序列可表為: =i=-xin于是輸出可分解為:

3、=*=i=-xin*hn=i=-yin其中=* 由此表明,只要將x(n)的每一段分別與h(n)卷積,然后再將這些卷積結果相加起來就可得到輸出序列,這樣,每一段的卷積都可用上面討論的快速卷積來計算。先對h(n)及xi(n)補零,補到具有N點長度,N=N1+N2-1。 一般選擇N=2M,然后用基2 FFT算法通過正反變換計算 yi(n)=xi(n)*h(n) 由于yi(n)的長度為N,而xi(n)的長度為N2,因此相鄰兩yi(n)序列必然有N-N2=N1-1點發(fā)生重疊,這個重疊部分應該相加起來才能構成最后的輸出序列。 計算步驟: a. 事先準備好濾波器參數H(k)=DFTh(n),N點 b.用N點

4、FFT計算Xi(k)=DFTxi(n) c.Yi(k)=Xi(k)H(k) d.用N點IFFT求 yi(n)=IDFTYi(k) e.將重疊部分相加 圖3.1重疊相加法的分段示意圖L點循環(huán)卷積M-1點緩存 x1(n) 后M-1點 y(n) 前N點 L=N+M-1 h(n)圖3.2 重疊相加法算法示意圖4 MATLAB程序設計基于以上對原理的分析,這里采用FFT算法實現重疊相加法的圓周卷積計算。程序主要由計算圓周卷積的函數以及重疊相加函數和主程序三部分組成。4.1 程序設計思路函數conv (x1,x2,L)設計(1) x1(n)進行N點快速傅里葉變換得X1k(2) x2(n)進行N點快速傅里葉

5、變換得X2k(3) 進行頻域相乘Yk=X1k*X2k(4) 對Yk進行反變換得到時域卷積結果y(n)函數overlap_add(x,h,N)設計(1)首先取圓周卷積的周期L(即進行L點的快速傅里葉變換)(2)計算每一分段的大小N(3)填充序列使得循環(huán)中對序列的索引不會超出范圍(4)計算分段數K(5)對序列進行分段調用conv ()函數計算圓周卷積(6)各段重疊相加(7)取出實際的輸出序列4.2 圓周卷積部分計算圓周卷積函數的流程圖:對進行FFT運算對進行FFT運算求和 的頻域之積 對求反變換得到時域值y(n)開始結束程序:function y = circular_conv( x1,x2,L

6、)%利用循環(huán)卷積計算線性卷積%循環(huán)卷積采用頻域計算方法,以FFT代替DFT,降低運算量x1k= fft(x1,L);%x1做L點FFTx2k= fft(x2,L);%x2做L點FFTyk = x1k.*x2k;%頻域相乘y = ifft(yk);%FFT反變換得循環(huán)卷積結果end4.3 重疊相加部分重疊相加法程序流程圖: 計算x1(n)和x2(n)的序列長度,分段數并得到臨時序列將x1(n)每段分別與x2(n)求圓周卷積將重疊部分相加輸出序列y(n)開始結束程序:function y = overlap_add(x1,x2,N)%重疊相加法實現%將高點數DFT轉化為低點數DFTM = leng

7、th(x2);%獲得x2(n)的長度if NM N = M+1;endL = M+N-1;Lx = length(x1);T = ceil(Lx/N);%確定分段數t = zeros(1,M-1);%生成1行M-1列的全零矩陣x1 = x1,zeros(1,(T+1)*N-Lx);%不足部分補0y = zeros(1,(T+1)*N);%定義輸出序列,初始化為全0for i=0:1:T xi = i*N+1; x_seg = x1(xi:xi+N-1); y_seg = circular_conv(x_seg,x2,L);%計算每段的圓周卷積 y_seg(1:M-1) = y_seg(1:M-

8、1)+t(1:M-1);%重疊相加 t(1:M-1) = y_seg(N+1:L); y(xi:xi+N-1) = y_seg(1:N);endy=y(1:Lx+M-1);end4.4 主程序x1=1:1:13;x2=-2,1,3;L=15;m=overlap_add(x1,x2,L);%重疊相加法得到的結果n=circular_conv(x1,x2,L);%線性卷積直接得到的結果subplot(4,1,1);a = 1:13;stem(a,x1)title(x1序列)subplot(4,1,2);b = 1:3;stem(b,x2)title(x2序列)subplot(4,1,3);c =

9、1:15;stem(c,m)title(基于重疊相加法的圓周卷積結果)5 MATLAB實現 圖5.1 圓周卷積m文件 圖5.2 重疊相加法m文件圖5.3 主程序m文件圖5.4 程序運行結果圖5.5 基于重疊相加法的圓周卷積結果表格心得體會數字信號處理是我們電信專業(yè)非常重要的一門課程,學好它對以后的進一步學習或者工作都有至關重要的作用,經過了一個學期的理論課程的學習,我感覺自己還停留在做題目上,而對理論知識的應用卻知之甚少,因此,這次課程設計對我來說是一個非常好的機會來進一步認識理論知識的具體意義,懷著這種心態(tài),我從對理論知識的回顧到設計仿真,每一步都非常認真的對待,我從中也學到了不少。這次課程

10、設計主要用到了matlab軟件,這款軟件在對數字信號處理的建模、編程、分析、實現等方面功能非常強大,由于之前在實驗課中我們曾經接觸過matlab,因此這次做起來相對輕松一些。我選做的題目是基于重疊相加法的圓周卷積,在開始進行程序設計之前,我先對理論知識進行了回顧,在熟悉了圓周卷積以及重疊相加法的原理以及matlab的應用環(huán)境后,我開始了軟件的設計,雖說之前對matlab有所了解,但對軟件里面的程序包并不了解,所以編程的過程中也遇到過很多問題,比如找不到需要用的函數,但通過查看軟件自帶的幫助信息我很快能夠找到自己想要的東西,在熟悉了原理后,程序設計并不復雜,但程序的調試卻花了很長時間,其中也遇到

11、了一些莫名其妙的問題,調試成功后第二次再打開就不行了,經過了長時間的調試,并且在老師和同學的幫助下,我換了個軟件終于解決了。雖然調試的過程并不順利,但成功后的喜悅是無窮的。我從中學到了很多東西,這些都是書本上很難遇到的,當然最終能夠獲得成功也離不開老師的幫助,所以在此感謝老師對我的幫助致謝在這次課程設計過程中,我得到了許多人的幫助。首先我要感謝吳巍老師在課程設計上給予我的指導、提供給我的支持和幫助,這是我能順利完成這次報告的主要原因,更重要的是老師幫我解決了許多技術上的難題,讓我能做得更加完善。在此期間,我不僅學到了許多新的知識,而且也開闊了視野,提高了自己的設計能力。其次,我要感謝幫助過我的同學,同時也感謝學院為我提供良好的做課程設計的環(huán)境。最后再一次感謝所有在設計中曾經幫助過我的良師益友和同學!參考文獻

溫馨提示

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

評論

0/150

提交評論