李昌利
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇南京211100)
“信號(hào)與系統(tǒng)”課程中有一個(gè)非常重要的結(jié)論:離散線性時(shí)不變系統(tǒng)的響應(yīng)為系統(tǒng)脈沖響應(yīng)序列與輸入序列的卷積(線性卷積)?!皵?shù)字信號(hào)處理”課程中又定義了兩個(gè)有限長(zhǎng)序列的循環(huán)卷積運(yùn)算??梢岳秒x散傅里葉變換的時(shí)域循環(huán)卷積性質(zhì)來計(jì)算兩個(gè)序列的線性卷積,而離散傅里葉變換可以通過快速傅里葉變換完成。通常的《數(shù)字信號(hào)處理》教材中討論循環(huán)卷積時(shí),給出了計(jì)算公式和計(jì)算實(shí)例,但都是從定義出發(fā),計(jì)算過程復(fù)雜。本文從線性卷積的簡(jiǎn)單計(jì)算方法入手,利用線性卷積與循環(huán)卷積的關(guān)系,提出一個(gè)非常簡(jiǎn)便的計(jì)算循環(huán)卷積方法。
首先定義模運(yùn)算。對(duì)任意整數(shù)m,m對(duì)N取模的運(yùn)算符為:<m>N=m+lN,模運(yùn)算定義為找一個(gè)整數(shù)l,使得0m+lNN-1。例如,<23>7=2,只要l=-3即可,又例如,<-13>7=1,只要l=2即可。
式中,N點(diǎn)循環(huán)卷積yC,N(n)定義域?yàn)?nN-1,長(zhǎng)度為N。
對(duì)上述定義域內(nèi)的x(n)和h(n),在“信號(hào)與系統(tǒng)”課程中定義了兩者的線性卷積為
式中,yL(n)的定義域?yàn)?nM1+M2-2,有效長(zhǎng)度為M1+M2-1。
[1] 指出循環(huán)卷積與線性卷積存在以下關(guān)系式:
由此可知,當(dāng)N≥M1+M2-1時(shí),循環(huán)卷積與線性卷積相等;而當(dāng)max(M1+M2)N<M1+M2-1時(shí),循環(huán)卷積與線性卷積不等。參考文獻(xiàn)[2] 和[3] 詳細(xì)證明了以上結(jié)論。
我們首先簡(jiǎn)單介紹計(jì)算序列x(n)和序列h(n)線性卷積的序號(hào)和匹配法[4],該法采用如下步驟。
(1)按序把x(n)和h(n)的序列值從左至右排列成兩行。兩個(gè)序列的第一個(gè)序列值排列時(shí)對(duì)齊,每個(gè)序列值占據(jù)一格;
(2)把x(n)的第一個(gè)序列值與h(n)的各個(gè)序列值依次相乘,把乘積結(jié)果按序從左至右排列,每個(gè)乘積結(jié)果占據(jù)一格;
(3)把x(n)的第二個(gè)序列值與h(n)的各個(gè)序列值依次相乘,把乘積結(jié)果按序從左至右排列,排列的起始位置較(2)右移一格;
(4)依據(jù)同樣的方法,把x(n)的其它序列值與h(n)的各個(gè)序列值依次相乘,之后把所得的乘積結(jié)果依次排列,排列的起始位置依次右移一格;
(5)把同一列的乘積結(jié)果相加就是線性卷積結(jié)果,對(duì)應(yīng)的序號(hào)n從左至右依次遞增。
現(xiàn)在先計(jì)算5點(diǎn)循環(huán)卷積yC,4(n)。式(3)右邊第二項(xiàng)yL(n+N)是由yL(n)左移5個(gè)單位形成的,得到如圖1所示的中間結(jié)果yL(n+5)。因?yàn)檠h(huán)卷積的定義域?yàn)?n4,所以只需考慮式(3)右邊兩項(xiàng)在0n4的部分,兩項(xiàng)在0n4內(nèi)的部分相加的最終結(jié)果如圖2所示。
同理可得,6點(diǎn)循環(huán)卷積的最終結(jié)果如圖3所示,7點(diǎn)循環(huán)卷積的中間結(jié)果如圖4所示。
圖1 計(jì)算5點(diǎn)循環(huán)卷積的中間結(jié)果
2計(jì)算5點(diǎn)循環(huán)卷積的最終結(jié)果
圖3 計(jì)算6點(diǎn)循環(huán)卷積的最終結(jié)果
圖4 計(jì)算7點(diǎn)循環(huán)卷積的最終結(jié)果
很容易驗(yàn)證,以上按列得到的各項(xiàng)恰與按式(1)計(jì)算得到的各項(xiàng)一致。事實(shí)上,也能以前述方法先計(jì)算兩個(gè)序列的線性卷積yL(n),再取(3)的右邊,然后取兩項(xiàng)相加結(jié)果在主值區(qū)間0nN-1的部分,此即序列的N點(diǎn)循環(huán)卷積yC,N(n)。
設(shè)x(n)={2,1,0,1}和h(n)={2,3,0,1,2},計(jì)算兩者的6點(diǎn)循環(huán)卷積yC,6(n)。
先計(jì)算兩個(gè)序列的線性卷積,得到的結(jié)果如圖5所示。為了計(jì)算序列的6點(diǎn)循環(huán)卷積,將圖5的結(jié)果整體左移6個(gè)單位,得到式(3)計(jì)算循環(huán)卷積的兩項(xiàng),中間結(jié)果如圖6所示,圖的底部標(biāo)出了對(duì)應(yīng)列的序號(hào)n。將前述結(jié)果在0n5的部分相加,得到的結(jié)果如圖7所示,該圖還給出了按列相加的結(jié)果,這就是最后的6點(diǎn)循環(huán)卷積結(jié)果yC,6(n)={5,10,3,4,8,2},最后一行標(biāo)示了對(duì)應(yīng)的序號(hào)n。
圖5 線性卷積的計(jì)算
圖6 循環(huán)卷積的中間結(jié)果
圖7循環(huán)卷積的最終結(jié)果
直接依據(jù)定義計(jì)算兩個(gè)序列的循環(huán)卷積很繁瑣。多數(shù)《數(shù)字信號(hào)處理》教材直接利用定義式計(jì)算循環(huán)卷積,由于定義式涉及到取模運(yùn)算,所以計(jì)算過程很容易出錯(cuò)。分析表明。兩個(gè)序列的循環(huán)卷積與線性卷積存在一個(gè)非常簡(jiǎn)單的關(guān)系式,而兩個(gè)有限長(zhǎng)序列的線性卷積很容易通過序號(hào)和匹配法計(jì)算,這樣就得到本文提出的用于計(jì)算循環(huán)卷積的簡(jiǎn)單方法。文章涉及到的概念及公式是自包含的,本文通過具體分析和計(jì)算實(shí)例,詳細(xì)地介紹了所提出的方法,便于讀者閱讀和參考。
參考文獻(xiàn):
[1] Vinay K.Ingle等著,劉樹棠譯.數(shù)字信號(hào)處理(MATLAB版)[M] .西安:西安交通大學(xué)出版社,2008
[2] 李昌利,霍冠英?!皵?shù)字信號(hào)處理”中重疊保留法的證明[J] 。南京:電氣電子教學(xué)學(xué)報(bào).2011,33(6):31-32
[3] 于鳳芹,張志剛,李昌利。數(shù)字信號(hào)處理簡(jiǎn)明教程[M] .北京:科學(xué)出版社,2011
[4] 李昌利。有限長(zhǎng)序列卷積和求解法[M] 。南京:電氣電子教學(xué)學(xué)報(bào).2008,30(1):63-65