序列的卷积运算与相关运算——MATLAB
一、實驗目的
1、掌握有限長序列線性卷積的編程計算原理,并能夠利用Matlab或C語言編寫算法程序進行線性卷積運算的程序實現;
2、學會線性卷積函數和線性相關函數的使用方法,并能利用二者進行有限長序列的線性卷積與線性相關運算的實現;自相關序列的基本性質;
4、驗證線性卷積運算和線性相關運算之間的關系,掌握由線性卷積運算實現線性相關運算的方法;
5、學會利用自相關序列進行信號周期性的檢測與判別。
二、實驗原理
在數字信號處理中,相關(correlation)可以分為互相關(cross correlation)和自相關(auto-correlation). 互相關是兩個數字序列之間的運算;自相關是單個數字序列本身的運算,可以看成是兩個相同數字序列的互相關運算.互相關用來度量一個數字序列移位后,與另一個數字序列的相似程度.其數學公式如下:
其中,f和g為數字序列,n為移位的位數,f*表示f序列值的復數共軛,即復數的實部不變,虛部取反而卷積(convolution)與互相關運算相似,定義為將其中一個序列反轉并移位后,兩個序列的乘積的積分(求和),其數學公式如下:
其中,f和g 為數字序列,n 為移位的位數.
在實數范圍內,f的復數共軛f*=f.此時,通過比較上面兩式可知:序列f與將序列g反轉后的序列的卷積為序列f與序列g的互相關
如下所示:
第一步:確定(n) 有限區間為[N1+N2,M1+M2], 這一步的的工作是為了決定y(n) 中的哪些序列值要計算,因為區間外的序列值都是0,無須計算
第二步:把x(n)和h(n)的有限區間都變為從0開始。
第三步:利用公式計算序列值。計算y(n)的n=0,1,2,…M1+M2 -N1- N2,所對應的y(0),y(1),…,y(M1+ M2 - N1+N2)。求每一個序列值時,乘加運算的結束標志是h(n-k)的n-k
第四步:把y(n)的序號由0開始變為由N1+N2開始,其它序號依次變為N1+M2為止,就是N2+1,N1+N2+2,直到M1+真正的輸出序列y(n)。
2、線性相關運算及計算方法
設序列x(n)利y(n)為兩個能量有限的離散時間信號,則序列之間的線性互相關序列(運算)
Rxy(m)反映了序列x(n)與右移m個單位的序列y(n)之間的相似程度,某一m處Rxy(m)的絕對值越大,則此時二者之間的相似性就越強。
序列的線性相關運算和線性卷積運算之關系:
Rxy(m)= y(m)x(-m)
表明:序列的相關運算可以序列的線性卷積運算為基礎進行實現。
(1)若序列x(n)是實序列,則R.(m)為偶函數,即:
Rxy(m)=Rxy(-m)
(2)Rxx(m)在=0時取得最大值,即:
Rxx(0)≥Rxx(m)
(3)若x(n)是能量信號,則有:
lim(x?∞) Rxx(m)=0
3、利用自相關序列講行信號周期性的檢測
原序列具有相同的周期。這一性質是實際應用中, 利用自相關運算進行信號周期性檢測的基礎和理論依據。
三、實驗步驟、數據記錄及處理
本實驗主要進行離散時間信號的線性卷積運算和線性相關運算的程序實現,實驗內容和具體的實驗步驟如下:
其中:
1、用Matlab生成兩個有限長序列x(n)、y(n)
2、編寫有限長序列線性卷積算法程序計算x(n)與y(n)的線性卷積,結果令為cl(n),即c1(n)=x(n)*y(n);利用 Matlab 的 conv()函數計算x(n)與y(n)的線性卷積,結果令為 c2(n),即c2(n)=x(n)*y(n)。將x(n)、y(n)、cl(n)、c2(n)的序列圖形繪制在一幅圖上,對結果進行對比分析,檢驗所實現的線性卷積算法仿真程序是否正確。
3、以 conv()函數為基礎,編程計算x(n)與vn)的卷積線性互相關序列,結果令為R1(n):利用 matlab的xcorr()函數計算x(n)與y(n)的線性互相關序列結果令為R2(n)。將x(n)、y(n)、R1(n)、R2(n)繪制在一幅圖上,對結果進行對比分析,驗線性卷積運算和線性相關運算之間的關系。
4、以下為1970年至1869年這100年間每年所記錄到的太陽黑子出現的月平均次數:
101,82,66,35,31,7,20,92,154,125,85,68,38,23,
10,24,83,132,131,118,90,67,60,47,41,21,16,6, 8,
42,28,10,8,2,0,1,5,12,4,7,14,34、45,43,416 , 7,
4,2,8,17,36,50,62,14,35,46,41,30,24,37,24, 67,71,
48,28,8,13,57,122,138,103,86,63,96,66,64, 54,39,
21,7,4,23,11,15,40,62,98,124,47,30,16,7,37,74,55,
94, 96,77,59,44,
然后將該組數據去除掉均值計算該組數據的均值,然后將該組數據去除掉均值后做自相關分析,繪制出自相關序列的圖形,并以計算結果為依據確定太陽黑子活動的周期。
實驗代碼:
(1)
四、分析
設x(n)x(n)x(n)和y(n)y(n)y(n)是兩個功率信號,其互相關函數定義為:
當x(n)=y(n)x(n)=y(n)x(n)=y(n),功率信號的自相關函數定義為:
如果x(n)x(n)x(n)和y(n)y(n)y(n)都是周期為 N NN 的信號,則(10)、(11)中有限區間上的平均值就等于一個周期上的平均值:
當x ( n ) = y (n ) x( n)=y( n)x(n)=y(n)時,功率信號的自相關函數定義為
由周期信號的定義可得:
互相關函數性質
設兩個信號x(n)x(n)x(n)和y(n)y(n)y(n) 均為能量信號,其能量分別為
對于線性非時變離散時間系統來說,若序列x(n)是系統的輸入,h(n)是系統在單位脈沖作用下的單位脈沖響應,則由于輸入序列x(n)可表示為一系列脈沖的線性組合,所以,根據線性系統的疊加性質,系統的輸出在系統初始不儲能的條件下(零狀態響應)可由圖求得。
上式在運算過程存在序列的翻轉、移位、相乘和相加,所以稱為卷積和。x(n)*h(n)表示兩個序列相卷積的運算符號,故式①也就是卷積的定義式。為了與離散傅里葉變換的循環卷積以及周期序列的周期卷積相區別,通常所指的卷積又稱為線性卷積。卷積運算符合交換率,可寫成另一種等效形式。
線性卷積的計算可以用解析法,也可以用圖解法。若兩 個序列的長度分別為N1和N2,則卷積結果的總長度應為L=N1+N2-1。
同理,對線性非時變連續系統來說,若連續時間信號x(t)是系統的輸入,h(t)是系統在單位脈沖作用下的單位沖激響應,則系統在零狀態的輸出為它們的卷積積分。
線性卷積是數字信號處理中最常見的一種基本運算,不僅用于系統分析還用于系統設計。如果代表濾波器的脈沖響應則卷積運算就是一種線性濾波,y(n)是信號x(n)通過濾波器后的響應。
卷積性質
(1)結合律:三個序列卷和運算,任意兩個序列先卷和運算,再與第3個序列作卷和運算,其運算結果等同。即
(2)交換律:離散序列卷和運算滿足交換律,即兩序列卷和運算與卷和次序無關,即
(3)分配律:兩個序列先行相加運算再與第3個序列做卷和運算,其結果等于這兩個序列分別與第3個序列先做卷和運算,然后二者再相加。
離散線性卷積的定義:設長度為N1的序列x(n)和長度為N2的序列h(n)進行線性卷積,得到長度為N1+N2-1的y(n)。離散圓周卷積的定義:圓周卷積是定義在有限長序列之間的。設有限長序列x(n)和h(n)的長度分別為N1和N2,取N>=max(N1,N2),定義它們的N點圓周卷積6。圓周卷積與線性卷積之間的關系:當有限長序列x(n)和h(n)的長度分別為N1和N2,取N>=max(N1,N2),當N>=N1+N2-1,則線性卷積與圓周卷積相同。對于線性卷積,一般直接比較麻煩,由上可知當取點數足夠多時(點數不夠補零),可求解圓周卷積即可,而圓周卷積又可通過FFT實現,從而實現線性卷積通過FFT和IFFT實現。
自相關檢測基本原理:
設混有隨機噪聲的信號為
將f(t)同時輸入到相關接收機的2個通道,其中一路經過延遲電路,使它延遲時間r,然后將經延遲后的f(t-T)和未經延遲的f(t)送入相敏檢波器(乘法器),再將乘積積分,取平均值,從而得到f(t)的自相關函數R(T)。
由于信號與噪聲是不相關的,根據互相關函數的性質知,Rns(T)=Rsn(T)=0,則有R(T)=Rss(t)+Rnn(t)。假設噪聲的均值為零,根據自相關函數的性質知,隨著t的增大,噪聲自相關函數Rnn(T)衰減至零,結果使包含著s(t)信息的e。Rss(T)相對突出從而達到檢測信號的目的。
五、思考題
(1)對于無限長序列序列的線性卷積的實現,能否利用直接編程計算的方式,為什么?
(2)試從區間端點及長度兩方面總結有限長序列線性卷積的結果序列的非零值區間與做卷積的兩個有限長序列的非零值區的關系。
(3)結合實驗或仿真結果說明在對周期信號進行自相關序列的計算時為什么總要先去掉直流成分?
六、總結
通過這次實驗,讓我知道序列的卷積和可以用matlab編程實現,并且實現的方法比較簡單,而且matlab本身有豐富的函數庫,畫圖、求卷積和時只要調用相應的函數即可。這次實驗的難點主要就在寫conv()函數和各序列長度的計算,如果不注意其中的計算關系則很容易出錯,而conv()只要寫錯,后面的題目的圖形就不能準確的繪制出來。對于后面的兩個小題只要把相應的序列寫出來,寫入用matlab表示的矩陣中,在調用dconv()畫出圖形即可。由于matlab這門課的學習距現在隔的的時間較長,所以,在實驗之前應該做好預習準備,熟悉matlab的基本操作,熟悉matlab相應函數的用法,這樣,在實驗中才能比較快速的完成實驗的要求,就不會感到無從下手。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的序列的卷积运算与相关运算——MATLAB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天一个实用小技巧!教你在Mac上快速输
- 下一篇: 「兼容M1」Royal TSX for