找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8153|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于MATLAB的卷積演示系統(tǒng)課程設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:352862 發(fā)表于 2018-6-22 17:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

數(shù)字信號處理課程設(shè)計
基于 MATLAB 的卷積演示系統(tǒng)



學(xué)號、姓名:
年級、專業(yè):


1卷積演示程序設(shè)計原理

數(shù)字信號處理的直接對象是數(shù)字信號,處理的方式是數(shù)值運算的方式,它涉及到的內(nèi)容非常豐富和廣泛,它是應(yīng)用最快、成效最顯著的新學(xué)科之一,作為信息專業(yè)的專業(yè)基礎(chǔ)課,需要掌握其基本理論和基本的分析方法,通過理論實踐、原理和應(yīng)用結(jié)合掌握知識。而MATLAB是集數(shù)學(xué)計算、圖形處理和程序語言設(shè)計于一體的軟件,通過MATLAB來實現(xiàn)數(shù)字信號處理的有關(guān)表達,最終實現(xiàn)課程設(shè)計的目的。





    • 卷積演示程序設(shè)計要求

(1)序列的長度和內(nèi)容由運行時輸入;

(2)分別動態(tài)演示它們進行線性卷積和循環(huán)卷積的過程,要求體現(xiàn)翻轉(zhuǎn)、移位、相乘、求和等過程;

(3)根據(jù)卷積結(jié)果,分析兩類卷積的關(guān)系。





    • 卷積演示程序設(shè)計目的

(1)、通過基于MATLAB的算法仿真實驗及分析,進一步領(lǐng)會和深化課堂上學(xué)到的有關(guān)數(shù)字信號處理的基本概念、基本原理以及基本的信號處理操作及設(shè)計方法。

(2)、掌握線性卷積與圓周卷積軟件實現(xiàn)的方法,并驗證二者之間的關(guān)系。

1.2 卷積演示程序設(shè)計內(nèi)容

(1)可輸入任意2待卷積序列x1(n)、x2(n),長度不做限定。測試數(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)分別動態(tài)演示2序列進行線性卷積x1(n)﹡x2(n)和圓周卷積x1(n) x2 (n)的過程;要求分別動態(tài)演示翻轉(zhuǎn)、移位、乘積、求和的過程。

(3)圓周卷積默認使用2序列中的最大長度,但卷積前可以指定卷積長度N用以進行混疊分析。

(4)根據(jù)實驗結(jié)果分析2類卷積的關(guān)系。

2卷積演示程序總體設(shè)計及關(guān)鍵技術(shù)分析

2.1 卷積演示程序設(shè)計基本原理

2.1.1 線性卷積

線性時不變系統(tǒng)(Linear Time-Invariant System, or L. T. I系統(tǒng))的輸入、輸出間的關(guān)系為:當系統(tǒng)輸入序列為x(n),系統(tǒng)的單位脈沖響應(yīng)為h(n),輸出序列為y(n),則系統(tǒng)輸出為:

或   

上式稱為離散卷積或線性卷積。

2.1.2 圓周卷積

設(shè)兩個有限長序列x1(n)和x2(n),均為N點長

x1(n)  X1(K)

x2(n)   X2(K)

如果X3(K)=X1(K)﹒X2(K)

N

上式稱為循環(huán)卷積或圓周卷積

注:為x1(n)序列的周期化序列;的主值序列。

編程計算時,x3(n)可表示如下:

2.2 兩個有限長序列的線性卷積

序列x1(n)為L點長,序列x2(n)為P點長,x3(n)為這兩個序列的線性卷積,則x3(n)為

且線性卷積x3(n)的最大長L+P-1,也就是說當時x3(n)=0。

2.3 兩個有限長序列的圓周卷積

線性卷積是求離散系統(tǒng)響應(yīng)的主要方法之一,許多重要應(yīng)用都建立在這理論基礎(chǔ)上,如卷積濾波等,專用函數(shù)conv(x,h)可完成線性卷積過程。

圓周卷積的計算速度遠快于線性卷積,如果選擇圓周卷積的長度,則可以用圓周卷積取代線性卷積。方法如下:

  • 定義圓周卷積的長度:選擇N=L+P-1。
  • 將兩個序列的長度都補足為N:

將長為L的序列x1(n)延長到N,補N-L個零;

將長為P的序列x2(n)延長到N,補N-P個零;

  • 翻轉(zhuǎn)x1(n),周期延拓為序列,取主周期。
  • 循環(huán)移位:與線性卷積不同,圓周卷積運算中采用的是循環(huán)移位,有限長序列x1(n)的循環(huán)移位定義為:

                        

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

                             

            表示對移位的周期序列取主值序列。所以f(n)仍然是一個長度為N的有限長序列。

2.4 卷積演示程序設(shè)計思想

首先建立一個基本的框架,制作一個菜單,其中包括主程序菜單和子程序的菜單,子程序菜單可以選擇回到主程序菜單選擇功能。菜單的框架完成后,實現(xiàn)可以任意輸入兩個序列,然后分別制作動態(tài)演示序列的線性卷積的程序、動態(tài)演示序列的圓周卷積、以及驗證時域卷機定理以及比較運行速率的程序。結(jié)合上面建立的框架完成菜單選擇以及功能的調(diào)用,讓整個設(shè)計完美。


2.4.1卷積演示程序設(shè)計流程圖

卷積演示程序設(shè)計流程圖如圖1所示:

            

圖1  流程圖

2.4.2卷積演示程序關(guān)鍵技術(shù)分析

本個設(shè)計主要要實現(xiàn)動態(tài)的演示,為實現(xiàn)動態(tài)演示,有很多不同的方法,而我采用的是for循環(huán)加上pause,在for循環(huán)中的一次執(zhí)行中,實現(xiàn)一次繪圖,表示某一時刻的狀態(tài),用pause暫停等待for循環(huán)中下一次執(zhí)行,實現(xiàn)動態(tài)演示。這是主要的一個設(shè)計,另外一個重要的技巧是如何將循環(huán)卷積表示出來,因為循環(huán)卷積的結(jié)果是周期的,其循環(huán)卷積的方法和線性卷積不同,并且循環(huán)卷積中要處理幾種情況:如當x1序列和x2序列之間的最大長度比卷積N長度大時是一種畫圖方法,比它小時是另外一種方法,然而困難的是當循環(huán)卷積長度比序列最大長度小時還要分析x1和x2序列各自長度與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]);

以上部分是實現(xiàn)翻轉(zhuǎn)并移位,在設(shè)計中是將序列x2進行翻轉(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

以上整個部分就是實現(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)

對于循環(huá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('錯誤,x1的長度要比x2短')

end

3.2結(jié)果及分析

開始運行程序,會進入主菜單,按照提示進行選擇:

請輸入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]

(1)、動態(tài)演示2序列的線性卷積

圖2   線性卷積結(jié)果

(2)、動態(tài)演示2序列的10點的圓周卷積

圖3  圓周卷積結(jié)果

4結(jié)論

針對卷積演示的程序進行設(shè)計,并給出了兩個示例序進行線性卷積和圓周卷積的翻轉(zhuǎn)、移位、乘機、求和的過程等。圓周卷積是將所有數(shù)據(jù)限定一個固定的長度。設(shè)線性卷積和圓周卷積有用信號部分長度分別為L、P,則當圓周卷積長度大于等于L+P-1時兩者等價。

線性卷積和圓周卷積對運算有不同的要求:線性卷積的對象可以是有限長或無限長非周期序列,若兩個序列的長度分別為M和N,則卷積后的序列長度為L=M+N-1。圓周卷積的對象是兩個同長度(若長度不同可用補零的方法達到同長度)的有限長序列,圓周卷積的結(jié)果也是同一長度的有限長序列。

它們的關(guān)系是:圓周卷積是線性卷積L點周期延拓的主值區(qū)間。

5心得體會

通過本次論文設(shè)計鞏固了所學(xué)過的數(shù)字信號處理課程的有關(guān)知識,同時也對matlab這個軟件有了更深的了解,它與數(shù)字信號處理這門課程之間有著緊密關(guān)系,matlab中是采用數(shù)組和距陣的方式處理數(shù)據(jù),如何將數(shù)字信號處理有關(guān)的資料以數(shù)組和距陣進行編程是我們學(xué)習(xí)的一個方面,通過這次的課程設(shè)計,讓我發(fā)現(xiàn)了數(shù)字信號處理在matlab中的應(yīng)用,同時也激發(fā)了我利用這軟件來實現(xiàn)數(shù)字信號處理有關(guān)問題的興趣。

本次設(shè)計中,有機地結(jié)合了理論與實踐,既考察了我們對理論知識的掌握情況,還反映出我們實際動手能力和編程能力,更主要的是它激起我們創(chuàng)新思維,提高了自己獨立分析問題和解決問題的能力,這在無形中以及提高了我各方面的能力。無論是在知識上,還是在思想上都給我烙下了深刻的印象。


完整的Word格式文檔51黑下載地址:

基于 MATLAB 的卷積演示系統(tǒng).doc (69 KB, 下載次數(shù): 29)



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表