1卷積演示程序設(shè)計(jì)原理
數(shù)字信號(hào)處理的直接對(duì)象是數(shù)字信號(hào),處理的方式是數(shù)值運(yùn)算的方式,它涉及到的內(nèi)容非常豐富和廣泛,它是應(yīng)用最快、成效最顯著的新學(xué)科之一,作為信息專業(yè)的專業(yè)基礎(chǔ)課,需要掌握其基本理論和基本的分析方法,通過理論實(shí)踐、原理和應(yīng)用結(jié)合掌握知識(shí)。而MATLAB是集數(shù)學(xué)計(jì)算、圖形處理和程序語言設(shè)計(jì)于一體的軟件,通過MATLAB來實(shí)現(xiàn)數(shù)字信號(hào)處理的有關(guān)表達(dá),最終實(shí)現(xiàn)課程設(shè)計(jì)的目的。
(1)序列的長(zhǎng)度和內(nèi)容由運(yùn)行時(shí)輸入;
(2)分別動(dòng)態(tài)演示它們進(jìn)行線性卷積和循環(huán)卷積的過程,要求體現(xiàn)翻轉(zhuǎn)、移位、相乘、求和等過程;
(3)根據(jù)卷積結(jié)果,分析兩類卷積的關(guān)系。
(1)、通過基于MATLAB的算法仿真實(shí)驗(yàn)及分析,進(jìn)一步領(lǐng)會(huì)和深化課堂上學(xué)到的有關(guān)數(shù)字信號(hào)處理的基本概念、基本原理以及基本的信號(hào)處理操作及設(shè)計(jì)方法。
(2)、掌握線性卷積與圓周卷積軟件實(shí)現(xiàn)的方法,并驗(yàn)證二者之間的關(guān)系。
1.2 卷積演示程序設(shè)計(jì)內(nèi)容
(1)可輸入任意2待卷積序列x1(n)、x2(n),長(zhǎng)度不做限定。測(cè)試數(shù)據(jù)為:
x1(n)={1,1,1,1,0, 0,1,1,1,1,0,0},x2(n)={0,1,2,1,0,0,0,1,2,1,0,0};
(2)分別動(dòng)態(tài)演示2序列進(jìn)行線性卷積x1(n)﹡x2(n)和圓周卷積x1(n) x2 (n)的過程;要求分別動(dòng)態(tài)演示翻轉(zhuǎn)、移位、乘積、求和的過程。
(3)圓周卷積默認(rèn)使用2序列中的最大長(zhǎng)度,但卷積前可以指定卷積長(zhǎng)度N用以進(jìn)行混疊分析。
(4)根據(jù)實(shí)驗(yàn)結(jié)果分析2類卷積的關(guān)系。
2卷積演示程序總體設(shè)計(jì)及關(guān)鍵技術(shù)分析
2.1 卷積演示程序設(shè)計(jì)基本原理
2.1.1 線性卷積
線性時(shí)不變系統(tǒng)(Linear Time-Invariant System, or L. T. I系統(tǒng))的輸入、輸出間的關(guān)系為:當(dāng)系統(tǒng)輸入序列為x(n),系統(tǒng)的單位脈沖響應(yīng)為h(n),輸出序列為y(n),則系統(tǒng)輸出為:

或

上式稱為離散卷積或線性卷積。
2.1.2 圓周卷積
設(shè)兩個(gè)有限長(zhǎng)序列x1(n)和x2(n),均為N點(diǎn)長(zhǎng)
x1(n)
X1(K)
x2(n)
X2(K)
如果X3(K)=X1(K)﹒X2(K)
則


N
上式稱為循環(huán)卷積或圓周卷積
注:
為x1(n)序列的周期化序列;
為
的主值序列。
編程計(jì)算時(shí),x3(n)可表示如下:

2.2 兩個(gè)有限長(zhǎng)序列的線性卷積
序列x1(n)為L(zhǎng)點(diǎn)長(zhǎng),序列x2(n)為P點(diǎn)長(zhǎng),x3(n)為這兩個(gè)序列的線性卷積,則x3(n)為

且線性卷積x3(n)的最大長(zhǎng)L+P-1,也就是說當(dāng)
和
時(shí)x3(n)=0。
2.3 兩個(gè)有限長(zhǎng)序列的圓周卷積
線性卷積是求離散系統(tǒng)響應(yīng)的主要方法之一,許多重要應(yīng)用都建立在這理論基礎(chǔ)上,如卷積濾波等,專用函數(shù)conv(x,h)可完成線性卷積過程。
圓周卷積的計(jì)算速度遠(yuǎn)快于線性卷積,如果選擇圓周卷積的長(zhǎng)度
,則可以用圓周卷積取代線性卷積。方法如下:
- 定義圓周卷積的長(zhǎng)度:選擇N=L+P-1。
- 將兩個(gè)序列的長(zhǎng)度都補(bǔ)足為N:
將長(zhǎng)為L(zhǎng)的序列x1(n)延長(zhǎng)到N,補(bǔ)N-L個(gè)零;
將長(zhǎng)為P的序列x2(n)延長(zhǎng)到N,補(bǔ)N-P個(gè)零;
- 翻轉(zhuǎn)x1(n),周期延拓為序列
,取主周期。 - 循環(huán)移位:與線性卷積不同,圓周卷積運(yùn)算中采用的是循環(huán)移位,有限長(zhǎng)序列x1(n)的循環(huán)移位定義為:

其含義如下:
表示x(n)的周期延拓序列
的移位:

表示對(duì)移位的周期序列
取主值序列。所以f(n)仍然是一個(gè)長(zhǎng)度為N的有限長(zhǎng)序列。
2.4 卷積演示程序設(shè)計(jì)思想
首先建立一個(gè)基本的框架,制作一個(gè)菜單,其中包括主程序菜單和子程序的菜單,子程序菜單可以選擇回到主程序菜單選擇功能。菜單的框架完成后,實(shí)現(xiàn)可以任意輸入兩個(gè)序列,然后分別制作動(dòng)態(tài)演示序列的線性卷積的程序、動(dòng)態(tài)演示序列的圓周卷積、以及驗(yàn)證時(shí)域卷機(jī)定理以及比較運(yùn)行速率的程序。結(jié)合上面建立的框架完成菜單選擇以及功能的調(diào)用,讓整個(gè)設(shè)計(jì)完美。
2.4.1卷積演示程序設(shè)計(jì)流程圖
卷積演示程序設(shè)計(jì)流程圖如圖1所示:
圖1 流程圖
2.4.2卷積演示程序關(guān)鍵技術(shù)分析
本個(gè)設(shè)計(jì)主要要實(shí)現(xiàn)動(dòng)態(tài)的演示,為實(shí)現(xiàn)動(dòng)態(tài)演示,有很多不同的方法,而我采用的是for循環(huán)加上pause,在for循環(huán)中的一次執(zhí)行中,實(shí)現(xiàn)一次繪圖,表示某一時(shí)刻的狀態(tài),用pause暫停等待for循環(huán)中下一次執(zhí)行,實(shí)現(xiàn)動(dòng)態(tài)演示。這是主要的一個(gè)設(shè)計(jì),另外一個(gè)重要的技巧是如何將循環(huán)卷積表示出來,因?yàn)檠h(huán)卷積的結(jié)果是周期的,其循環(huán)卷積的方法和線性卷積不同,并且循環(huán)卷積中要處理幾種情況:如當(dāng)x1序列和x2序列之間的最大長(zhǎng)度比卷積N長(zhǎng)度大時(shí)是一種畫圖方法,比它小時(shí)是另外一種方法,然而困難的是當(dāng)循環(huán)卷積長(zhǎng)度比序列最大長(zhǎng)度小時(shí)還要分析x1和x2序列各自長(zhǎng)度與N的關(guān)系而做不同的情況分析,具體的解決方法見程序?qū)崿F(xiàn)。
3卷積演示程序
3.1程序?qū)崿F(xiàn)
3.1.1線性卷積程序?qū)崿F(xiàn)
x1=[1,1,1,1,0,0,1,1,1,1,0,0];
x2=[0,1,2,1,0,0,0,1,2,1,0,0];
p=length(x1);
q=length(x2);
n=p+q-1;
a= 0 : q-1;
y2(a+1)=x2(q-a);
for n=1 : p+q-1
k=-q+n:1:-1+n;
subplot(3,1,2)
stem(k,y2)
title('x2(n-m)');
axis([-16,16,0,24]);
以上部分是實(shí)現(xiàn)翻轉(zhuǎn)并移位,在設(shè)計(jì)中是將序列x2進(jìn)行翻轉(zhuǎn)和移位。
y=conv(x1,x2);
t=1:1:n
h(t)=y(t);
subplot(3,1,3)
t=0:n-1;
stem(t,h);
title('線性卷積y(n)')
axis([-16,16,0,24]);
pause(1)
end
以上整個(gè)部分就是實(shí)現(xiàn)線性卷積的過程。
subplot(3,2,1)
stem(x1);
title('x1(m)')
axis([0,15,0,1]);
pause(1)
subplot(3,2,2)
stem(x2);
title('x2(m)')
axis([0,15,0,2]);
pause(1)
end
3.1.2圓周卷積程序?qū)崿F(xiàn)
對(duì)于循環(huán)卷積,要求我們進(jìn)行判斷并根據(jù)情況做不同的分析:
x1=[1,1,1,1,0,0,1,1,1,1,0,0];
x2=[0,1,2,1,0,0,0,1,2,1,0,0];
p=length(x1);q=length(x2);k=max(p,q);%p<q
if k>N
if p<q&p<N
x11=[x1,zeros(1,N-p)];
n=0:1:N-1;
x22(n+1)=x2(n+1);
elseif p==q|p>N
n=0:1:N-1;
x11(n+1)=x1(n+1);
x22(n+1)=x2(n+1);
else disp('錯(cuò)誤,x1的長(zhǎng)度要比x2短')
end
3.2結(jié)果及分析
開始運(yùn)行程序,會(huì)進(jìn)入主菜單,按照提示進(jìn)行選擇:
請(qǐng)輸入x1:[1,1,1,1,0,0,1,1,1,1,0,0]
請(qǐng)輸入x2:[0,1,2,1,0,0,0,1,2,1,0,0]
(1)、動(dòng)態(tài)演示2序列的線性卷積

圖2 線性卷積結(jié)果
(2)、動(dòng)態(tài)演示2序列的10點(diǎn)的圓周卷積

圖3 圓周卷積結(jié)果
4結(jié)論
針對(duì)卷積演示的程序進(jìn)行設(shè)計(jì),并給出了兩個(gè)示例序進(jìn)行線性卷積和圓周卷積的翻轉(zhuǎn)、移位、乘機(jī)、求和的過程等。圓周卷積是將所有數(shù)據(jù)限定一個(gè)固定的長(zhǎng)度。設(shè)線性卷積和圓周卷積有用信號(hào)部分長(zhǎng)度分別為L(zhǎng)、P,則當(dāng)圓周卷積長(zhǎng)度大于等于L+P-1時(shí)兩者等價(jià)。
線性卷積和圓周卷積對(duì)運(yùn)算有不同的要求:線性卷積的對(duì)象可以是有限長(zhǎng)或無限長(zhǎng)非周期序列,若兩個(gè)序列的長(zhǎng)度分別為M和N,則卷積后的序列長(zhǎng)度為L(zhǎng)=M+N-1。圓周卷積的對(duì)象是兩個(gè)同長(zhǎng)度(若長(zhǎng)度不同可用補(bǔ)零的方法達(dá)到同長(zhǎng)度)的有限長(zhǎng)序列,圓周卷積的結(jié)果也是同一長(zhǎng)度的有限長(zhǎng)序列。
它們的關(guān)系是:圓周卷積是線性卷積L點(diǎn)周期延拓的主值區(qū)間。
5心得體會(huì)
通過本次論文設(shè)計(jì)鞏固了所學(xué)過的數(shù)字信號(hào)處理課程的有關(guān)知識(shí),同時(shí)也對(duì)matlab這個(gè)軟件有了更深的了解,它與數(shù)字信號(hào)處理這門課程之間有著緊密關(guān)系,matlab中是采用數(shù)組和距陣的方式處理數(shù)據(jù),如何將數(shù)字信號(hào)處理有關(guān)的資料以數(shù)組和距陣進(jìn)行編程是我們學(xué)習(xí)的一個(gè)方面,通過這次的課程設(shè)計(jì),讓我發(fā)現(xiàn)了數(shù)字信號(hào)處理在matlab中的應(yīng)用,同時(shí)也激發(fā)了我利用這軟件來實(shí)現(xiàn)數(shù)字信號(hào)處理有關(guān)問題的興趣。
本次設(shè)計(jì)中,有機(jī)地結(jié)合了理論與實(shí)踐,既考察了我們對(duì)理論知識(shí)的掌握情況,還反映出我們實(shí)際動(dòng)手能力和編程能力,更主要的是它激起我們創(chuàng)新思維,提高了自己獨(dú)立分析問題和解決問題的能力,這在無形中以及提高了我各方面的能力。無論是在知識(shí)上,還是在思想上都給我烙下了深刻的印象。
完整的Word格式文檔51黑下載地址:
基于 MATLAB 的卷積演示系統(tǒng).doc
(69 KB, 下載次數(shù): 29)
2018-6-22 17:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5