matlab實現線性卷積和循環卷積_第1頁
matlab實現線性卷積和循環卷積_第2頁
matlab實現線性卷積和循環卷積_第3頁
matlab實現線性卷積和循環卷積_第4頁
matlab實現線性卷積和循環卷積_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、桂林電子科技大學實訓專用紙編號: 數字信號處理 實訓 (論文)說明書題 目: 用matlab實現兩信號的卷積 院 (系): 應用科技學院 專 業: 電子信息工程 學生姓名: 蔣耀華 學 號: 0801130215 指導教師: 嚴素清 童有為 紀元法 2011 年 6 月 29日第2頁摘 要本文講述的是運用matlab軟件編寫線性卷積和循環卷積,運行程序并得到正確結果,附上運行結果圖讓大家參照對比。MATLAB是一款在數學類科技應用軟件中特別是在數值計算方面首屈一指的軟件,它可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理

2、與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。而線性卷積和循環卷積在工程上的應用亦非常廣泛,在Matlab軟件處理下,實現任意兩個序列的線性和循環卷積對于工程上的輔助是相當重要的。卷積關系最重要的一種情況,就是在信號與線性系統或數字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運算等價為頻率域的相乘運算,從而利用FFT等快速算法,實現有效的計算,節省運算代價。本文從線性卷積和循環的定義出發,分析其運算原理以及相關的公式、程序,著重介紹并分析了卷積的運算過程,讓大家明白什么是卷積。程序運行之后得到正確的結果,將運行后正確的波形圖圖放在本次論文中讓大家直觀的做比較。關鍵詞:

3、Matlab;線性卷積;循環卷積;波形圖;正確AbstractThis is about using matlab software linear convolution and cyclic convolution, operation procedure and get the right result, enclosed operation result diagram let everybody referenceMATLAB is a type of technology in applications of mathematics, especially in numerical

4、calculation of the leading software, which can be matrix calculation, and data mapping function, the realization of algorithms, creation of user interface, connected to other procedures, such as programming languages, the main application in engineering computing, control design, signal processing a

5、nd communications, image processing, signal detection, financial modeling in areas such as design and analysis. And linear convolution in the application of engineering has a very wide range of software in Matlab, the realization of any two sequences of linear convolution support for projects is ver

6、y important. Convolution relationship between the most important case, that is linear in the signal and digital signal processing system or the convolution theorem. Use of the theorem can be time-domain or space domain to the convolution operation in frequency domain equivalent of the multiplication

7、 operation, thus the use of FFT and other fast algorithms, the calculation of effective, cost-saving operation. From linear convolution and circulation of the definition, analyzes its operation principle and relevant formula, procedures, and emphatically introduces and analyses the convolution opera

8、tion process, let everyone know what convolution. After the program is running properly after operation, the results will be put on the right of the waveform Desmond tutu paper let everybody intuitive to compare.Key words:Matlab;Linear convolution;Circular convolution;Sequence;Wave;Right目 錄引言11 MATL

9、AB軟件簡介11.1 MATLAB的優勢11.2 MATLAB的組成32 卷積分析32.1 卷積的定義32.2 線性卷積的運算42.3 循環卷積的運算53 MATLAB設計線性卷積53.1 線性卷積的分析53.2 線性卷積的設計流程圖63.3 線性卷積的MATLAB設計源程序64 MATLAB設計循環卷積84.1 循環卷積的分析84.2 根據循環卷積分析設計流程圖84.3 根據循環卷積流程圖設計matlab源代碼105 總結11謝 辭12參考文獻13桂林電子科技大學實訓專用紙引言在泛函分析中,卷積(卷積)、旋積或摺積(英語:Convolution)是通過兩個函數f 和g 生成第三個函數的一種數

10、學算子,表徵函數f 與經過翻轉和平移與g 的重疊部分的累積。如果將參加卷積的一個函數看作區間的指示函數,卷積還可以被看作是“滑動平均”的推廣。卷積是分析數學中一種重要的運算,數學上的卷積在信號處理中有著非常廣泛的應用。只要這個系統是線性的,對于一維空間是這樣,二維、三維都是這樣,空間域信號是這樣,時間域信號也是這樣。一切信號傳遞處理系統都是卷積系統,但是信號發生系統不像卷積這樣,因為信號發生系統不是一個無中生有的系統,它需要消耗能量,而且是一個非線性系統。卷積關系最重要的一種情況,就是在信號與線性系統或數字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運算等價為頻率域的相乘運算

11、,從而利用FFT等快速算法,實現有效的計算,節省運算代價。明確了這些含義以后,我們認為信號放大系統是卷積,信號測量和計數系統也是積。進一步推廣照相系統是卷積,視覺系統也是卷積。世界上所有的系統都是卷積,例如脈搏是心跳的卷積,水壓的波動是泵水電動機轉動力的卷積,只要系統是線性的或近似線性的。卷積的概念還可以推廣到數列、測度以及廣義函數上去。因此,我們得到這樣一個一般性的結論卷積在我們的生活中無處不在,它的應用非常廣泛。1 MATLAB軟件簡介MATLAB名字由MATRIX和 LABORATORY 兩詞的前三個字母組合而成。顧名思義,就是矩陣實驗室( matrix laboratory )。MAT

12、LAB是一種高性能的科學計算軟件,并且廣泛應用于數學計算、算法開發、數學建模、系統仿真、數據分析可視化和程序設計集成化等,其具有強大的矩陣運算能力和極高的編程效率,而且使用我們熟悉的數字符號表示問題與答案,這對于初學者來說很容易上手,同時也方便了用戶對自己需要的應用程序的開發,運行相應的程序還可以在圖形用戶界面的建立各種波形仿真圖。MATLAB是一個交互系統,它的基本數據元素是數組,尤其適合解決用矩陣和向量組織數據的科學技術計算問題,對于各種信號的處理可以用不同的庫函數或者用戶自己編輯的程序來處理,由此可以得到不同的結果,并且還可以經過圖形顯示來驗證。1.1 MATLAB的優勢MATLAB編程

13、語言又稱為M語言,是一種交互式的高級編程語言,一種高階的矩陣/數組語言。它具有以下的特點和優勢:(1)語法簡單和編程效率高(2)便于用戶使用和擴充(3)方便高校的矩陣和數組運算(4)方便的圖形和圖像操作功能(5)功能強大的工具箱1.1.1 語法簡單編程效率高MATLAB是一個高級的矩陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。新版本的MATLAB語言是基于最為流行的C+語言基礎上的,因此語法特征與C+語言極為相似,而且更加簡單,更加符合科技人員對數學表達式的書寫格式。使之更利于非計算機專業的科技人員使用。1.1.2 便于用戶使用和補充新版本的MATLAB可以利用

14、MATLAB編譯器和C/C+數學庫和圖形庫,將自己的MATLAB程序自動轉換為獨立于MATLAB運行的C和C+代碼。允許用戶編寫可以和MATLAB進行交互的C或C+語言程序作為強大的科學計算軟件,MATLAB提供了圖形界面的設計與開發功能,MATLAB中的基本圖形用戶界面對象分為三類:用戶界面控制對象、下拉式菜單對象和內容式菜單對象。1.1.3 方便高校的矩陣和數組運算MATLAB是一個包含大量計算算法的集合。其擁有600多個工程中要用到的數學運算函數,可以方便的實現用戶所需的各種計算功能。函數所能解決的問題其大致包括矩陣運算和線性方程組的求解、微分方程及偏微分方程的組的求解、符號運算、傅立葉

15、變換和數據的統計分析、工程中的優化問題、稀疏矩陣運算、復數的各種運算、三角函數和其他初等數學運算、多維數組操作以及建模動態仿真等。在高校中,MATLAB以成為數學,信息,控制等諸多學科有關課程的有效教學工具1.1.4 方便圖形和圖像操作功能MATLAB自產生之日起就具有方便的數據可視化功能,以將向量和矩陣用圖形表現出來,并且可以對圖形進行標注和打印。它對一些特殊的可視化要求,例如圖形對話等,MATLAB也有相應的功能函數,保證了用戶不同層次的要求。1.1.5 功能強大的工具箱MATLAB對許多專門的領域都開發了功能強大的模塊集和工具箱。一般來說,它們都是由特定領域的專家開發的,用戶可以直接使用

16、工具箱學習、應用和評估不同的方法而不需要自己編寫代碼。1.2 MATLAB的組成MATLAB很重要的特點,是附加了一個解決專門問題的應用程序大家族,叫工具箱。它對于MATLAB用戶是非常重要的,能讓用戶學習和應用專門的技術。工具箱是MATLAB函數的全面集合,擴展了MATLAB解決特殊類型問題的環境。工具箱可以應用的領域包括信號處理、控制系統、神經網絡、磨具邏輯、子波、模擬等方面。MATLAB這個名字,代表MATRIX LABOROATOR.MATLAB系統由5個主要部分組成:1.2.1 開發環境這是一組工具程序,幫助用戶使用MATLAB功能和文件。許多工具是圖形用戶界面,包括MATLAB桌面

17、和命令窗口,命令的歷史窗口,編輯器和差錯程序,觀看幫助信息的瀏覽器,工作區,文件和收索路徑。1.2.2 MATLAB的數學函數庫這是一個計算算法的巨大集合,范圍從初等函數,入求和、正弦、余弦和復數運算,到更高級別的函數,像矩陣求逆、矩陣特征值、貝賽爾函數和快速傅里葉變換。1.2.3 MATLAB語言一個高級的矩陣和數組運算,具有控制流語句、函數、數據結構、輸入和輸出、面向對象的程序特點。用這種語言能夠快速建立運行快且短小的程序,也能建立大的和復雜的應用程序。1.2.4 圖形MATLAB有廣泛的程序,用于把向量和矩陣顯示為圖形,以及注解和打印這些圖像。它包括高級功能,用于二維和三維數據的形象化、

18、圖像處理、動畫和演示圖形;包括低級功能,讓用戶完全定制圖形外觀,以及為用戶的應用程序建立完全的圖形用戶界面。1.2.5 MATLAB應用程序接口(API)這是一個程序庫,允許用戶寫C和FORTRAN程序與MATLAB交互。其中包含的程序,用于從MATLAB調用例行程序,調用MATLAB作為計算引擎,以及讀取MAT文件。2 卷積分析2.1 卷積的定義任意信號f(t)都可以根據不同需要進行不同的分解。如信號f(t)可以分解為直流分量和交流分量,也可以分解為奇分量和偶分量,或分解為實部分量和虛部分量。如果信號費解為沖擊信號,那么信號分解為一系列不同強度,不同時延的沖擊信號的疊加,這個過程稱為卷積積分

19、。一般而言,如果有兩個函數和,則它們的積分稱為與的卷積積分,簡稱卷積,表達式為:,即:2.2 線性卷積的運算卷積運算是線性時不變系統分析的重要工具,很多濾波器的設計中都要用到卷積運算。給出線性卷積運算的定義,設有離散信號x(n)和y(n),其線性卷積為:xym=-+xmym-n線性卷積有四步運算:卷積運算時,y(n)要先反折得到y(-n);m>0表示y(-n)序列右移,m<0表示左移,不同的m表示不同的xy(m)值。線性卷積運算簡潔表示為:xym=xn*yn式中 “”表示線性卷積運算符。由線性卷積的定義_xy (m)=-+xmy(m-n),等式右邊是乘積求和形式,因而考慮能否用矩陣

20、相乘的形式來表示線性卷積。假設序列x(n) 長度為4點,y(n) 長度為3點,x(n) 除區間之外皆為零,y(n) 除區間之外皆為零,用矩陣的形式來表達線性卷積Z: y1 0 0 0 y2 y1 0 0 x1Z= y3 y2 y1 0 x20 y3 y2 y1 x30 0 y3 y2 x40 0 0 y3 x(n),y(n)序列長度不同,則將短序列補0使兩者相同。2.3 循環卷積的運算有限長序列的循環移位是指y(m-n)RN(n),也就是先讓序列y(n)以N為周期進行周期延拓,再進行反折,然后朝右移位,只朝一個方向移位的原因是:對周期序列向右移動一個位置,也就相當于向左移動了N1個位置,最后取

21、(0,N1)的N個值就得到了循環移位后的N個序列值。設有序列x(n)和y(n),其N點循環卷積為:xym=n=0N-1xnym-nNRN(n)由于循環移位的關系最后得到的循環卷積的長度就是N點,m取0,1,2,N-1。循環卷積的簡潔表示為:xym=x(n)y(n)式中表示循環卷積運算符。例如N=4的循環卷積如下: x1 x2 x3 x4 y1Z= x4 x1 x2 x3 y2 x3 x4 x1 x2 y3 x2 x3 x4 x1 y4其中,Nlength(y(n)。值得說明的是,當Nlength(y(n)+ length(x(n)-1時,圓周卷積的值等于線性卷積。3 MATLAB設計線性卷積3

22、.1 線性卷積的分析兩個序列的線性卷積可以分為下列4個步驟:(1)反折:先將x(n)和h(n)的變量n換成m,變成x(n)和h(m),再將h(m)以y軸為對稱軸反褶成h(-m)。(2)移位:將h(-m)移位n,得h(n-m)。當n為正數時,右移n位;當n為負數時,左移n位。(3)相乘:將h(n-m)和x(m)的對應點值相乘。(4)求和:將以上所有對應點的乘積累加起來,即得y(n)。3.2 線性卷積的設計流程圖根據線性卷積的分析,可設計流程圖如圖3.1所示n=1:Ly(n)=0輸入序列X1,X2線性卷積N1ßlength(x1)M ßlength(x2)卷積長度L=N1+M-

23、1m=1:Mk=n-m+1k>=1&k<=N1y(n)=y(n)+X2(m)*X1(k)END卷積結果y(n) N Y m=M n=L圖3.1線性卷積流程圖3.3 線性卷積的MATLAB設計源程序本次實訓的源程序如下:function y=myconv(x1,x2)x1=input('x1=');x2=input('x2=');N1=length(x1);M=length(x2);L=N1+M-1;for(n=1:L) y(n)=0; for(m=1:M) k=n-m+1; if(k>=1&k<=N1) y(n)=y(n)

24、+x2(m)*x1(k); end endendy1=conv(x1,x2);nx1=0:N1-1;nx2=0:M-1;ny=0:L-1;subplot(231);stem(nx1,x1,'.k');xlabel('n');ylabel('x1(n)');grid on;title('序列x1')subplot(232);stem(nx2,x2,'.k');xlabel('n');ylabel('x2(n)');grid on;title('序列x2')subplot

25、(233);stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on;title('線性卷積')subplot(234);stem(y1');xlabel('n');ylabel('y1');grid on;title('conv直接卷積')運行程序,輸入序列x1和x2x1=-1 2 3 -5x2=6 7 -10 4 12線性卷積結果:-6 5 42 -33 -69 86 16 -60運行結果如圖3.2所示:圖3.2線性卷積運行結果

26、4 MATLAB設計循環卷積4.1 循環卷積的分析兩個序列的循環卷積可以分三個步驟完成:(1)初始化:確定循環點數N,測量輸入2個序列的長度,長度小于N的在后面補0。(2)循環右移函數:將序列x(n)循環右移,一共移N次(N為循環卷積的循環次數),最后將每次循環成的新序列組成一個矩陣V。(3)相乘:將x(n)移位后組成的矩陣V與第二個序列h(n)對應相乘,即得循環卷積結果。4.2 根據循環卷積分析設計流程圖循環卷積流程圖如圖4.1所示:(1) 主流程圖循環卷積輸入序列X1,X2輸入循環點數N調用右移循環函數V=circlel(X2)Z=X1*V循環卷積結果Z ENDX2(k)=X2(K-1)X

27、2(1)=L;實現循環右移功能循環函數V=circlel(X2)A=length(X2)V=zeros(A A)i=1:Aj=1:AV(i.j)=X2(j)L=X2(A)K=A:-1:2(2)循環函數流程圖 K=1當i=A圖4.1循環卷積流程圖4.3 根據循環卷積流程圖設計matlab源代碼function y=myconv(x1,x2)x1=input('x1=');x2=input('x2=');N=input('N=');x1=x1,zeros(1,N-length(x1);x2=x2,zeros(1,N-length(x2); V=cir

28、clel(x2)Z=x1*V;stem(Z');xlabel('n');ylabel('Z');grid on;title('循環卷積結果Z')運行程序,輸入序列x1,x2x1=-1 2 3 -5x2=6 7 -10 4 12循環卷積結果10 -55 42 -33 -69 86運行圖形如圖4.2所示圖4.2循環卷積運行結果5 總結總結本次數字信號處理實訓,我受益匪淺。首先就是方案的確定。由于這個學期我學習了DSP這門課程,課程中我了解到要實現兩信號的卷積,可以通過定義來實現,也可以通過DFT來計算線性卷積。對于有限長序列,存在兩種形式的卷積:線性卷積與圓周卷積。由于圓周卷積可以采用DFT的快速算法快速傅里葉變換進行運算,運算速度上有很大的優越性。其中,設計線性卷積有4個步驟,反折、移位 、相乘、求和,而循環卷積則是通過循環移位后得到的矩陣與序列相乘。根據上DSP課上老師講的求法,畫出了思路的流程圖,然后根據流程圖寫出程序,事半功倍。將結果與直接調用matlab自帶的函數比較,結果顯示,自己設計的程序是正確的。通過這次實訓,我對線性卷積和循環的定義、原理、以及實現方法都有了深入的認識。同時也對MATLAB軟件產生了更加濃厚的興趣。在做完本次實訓要求的線性卷積之后,我運用了同樣的思路,設計出了循環卷積,算是對本次實訓

溫馨提示

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

評論

0/150

提交評論