《數(shù)字信號處理實驗》課件第5章_第1頁
《數(shù)字信號處理實驗》課件第5章_第2頁
《數(shù)字信號處理實驗》課件第5章_第3頁
《數(shù)字信號處理實驗》課件第5章_第4頁
《數(shù)字信號處理實驗》課件第5章_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1.1市場與市場營銷1.2我國汽車市場的發(fā)展與現(xiàn)狀復習思考題實驗5卷積的原理及應用一、實驗目的

(1)通過實驗進一步理解卷積定理,了解卷積的過程。

(2)掌握應用線性卷積求解離散時間系統(tǒng)響應的基本方法。

(3)了解MATLAB中有關卷積的子函數(shù)及其應用方法。二、實驗涉及的MATLAB子函數(shù)

1.conv

功能:進行兩個序列間的卷積運算。

調(diào)用格式:

y=conv(x,h);用于求取兩個有限長序列x和h的卷積,y的長度取x、h長度之和減1。

例如,x(n)和h(n)的長度分別為M和N,則

y=conv(x,h)

y的長度為N+M-1。

使用注意事項:conv默認兩個信號的時間序列從n=0開始,因此默認y對應的時間序號也從n=0開始。

2.sum

功能:求各元素之和。

調(diào)用格式:

Z=sum(x);求各元素之和,常用于等寬數(shù)組求定積分。

3.hold

功能:控制當前圖形是否刷新的雙向切換開關。

調(diào)用格式:

holdon;使當前軸及圖形保持而不被刷新,準備接受此后將繪制的新曲線。

holdoff;使當前軸及圖形不再具備不被刷新的性質(zhì)。

4.pause

功能:暫停執(zhí)行文件。

調(diào)用格式:

pause;暫停執(zhí)行文件,等待用戶按任意鍵繼續(xù)。

pause(n);在繼續(xù)執(zhí)行之前,暫停n秒。三、實驗原理

1.離散LSI系統(tǒng)的線性卷積

由理論學習我們已知,對于線性移不變離散系統(tǒng),任意的輸入信號x(n)可以用d(n)及其位移的線性組合來表示,即

當輸入為d(n)時,系統(tǒng)的輸出y(n)=h(n),由系統(tǒng)的線性移不變性質(zhì)可以得到系統(tǒng)對x(n)的響應y(n)為

稱為離散系統(tǒng)的線性卷積,簡記為

y(n)=x(n)*h(n)

也就是說,如果已知系統(tǒng)的沖激響應,將輸入信號與系統(tǒng)的沖激響應進行卷積運算,即可求得系統(tǒng)的響應。MATLAB提供了進行卷積運算的conv子函數(shù)。

2.直接使用conv進行卷積運算

求解兩個序列的卷積,很重要的問題在于卷積結果的時寬區(qū)間如何確定。在MATLAB中,卷積子函數(shù)conv默認兩個信號的時間序列從n=0開始,y對應的時間序號也從n=0開始。

例5-1

已知兩個信號序列:

f1=0.8n(0<n<20)

f2=u(n)(0<n<10)

求兩個序列的卷積和。

編寫MATLAB程序如下:

nf1=0:20;%建立f1的時間向量

f1=0.8.^nf1;%建立f1信號

subplot(2,2,1);stem(nf1,f1,¢filled¢);

title(¢f1(n)¢);

nf2=0:10;%建立f2的時間向量

lf2=length(nf2);%取f2時間向量的長度

f2=ones(1,lf2);%建立f2信號

subplot(2,2,2);stem(nf2,f2,¢filled¢);

title(¢f2(n)¢);

y=conv(f1,f2);%卷積運算

subplot(2,1,2);stem(y,¢filled¢);

title(¢y(n)¢);

結果如圖5-1所示。

圖5-1例5-1f1(n)、f2(n)、y(n)的波形

例5-2

如例4-1,已知一個因果系統(tǒng)的差分方程為

6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)

滿足初始條件y(-1)=0,x(-1)=0。在該系統(tǒng)的輸入端加一個矩形脈沖序列,其脈沖寬度與周期的比例為1∶4,一個周期取16個采樣點,求該系統(tǒng)的響應。

解編寫MATLAB程序如下:

N=16;

n=0:N-1;

x=[ones(1,N/4),zeros(1,3*N/4)];%產(chǎn)生輸入信號序列

subplot(3,1,1);stem(n,x,¢filled¢);

a=[1,0,1/3,0];

b=[1/6,1/2,1/2,1/6];

hn=impz(b,a,n);%求系統(tǒng)的單位沖激響應

subplot(3,1,2);stem(n,hn,¢filled¢);

y=conv(x,hn);%卷積運算

subplot(3,1,3);stem(y,¢filled¢);

程序執(zhí)行的結果如圖5-2所示。

圖5-2例5-2x(n)、h(n)、y(n)的波形

3.復雜序列的卷積運算

由于MATLAB中卷積子函數(shù)conv默認兩個信號的時間序列從n=0開始,因此,如果信號不是從0開始,則編程時必須用兩個數(shù)組確定一個信號,其中,一個數(shù)組是信號波形的幅度樣值,另一個數(shù)組是其對應的時間向量。此時,程序的編寫較為復雜,我們可以將其處理過程編寫成一個可調(diào)用的通用子函數(shù)。下面是在conv基礎上進一步編寫的新的卷積子函數(shù)convnew,是一個適用于信號從任意時間開始的通用程序。

function[y,ny]=convnew(x,nx,h,nh)%建立 convnew子函數(shù)

%x為一信號幅度樣值向量,nx為x對應的時間向量

%h為另一信號或系統(tǒng)沖激函數(shù)的非零樣值向量,nh為h對應的時間向量

%y為卷積積分的非零樣值向量,ny為其對應的時間向量

n1=nx(1)+nh(1);%計算y的非零樣值的起點位置

n2=nx(length(x))+nh(length(h));%計算y的非零樣值 的寬度

ny=[n1:n2];%確定y的非零樣值時間向量

y=conv(x,h);

用上述程序可以計算兩個離散時間序列的卷積和,求解信號通過一個離散系統(tǒng)的響應。

例5-3

兩個信號序列:f1為0.5n(0<n<10)的斜變信號序列;f2為一個u(n+2)(-2<n<10)的階躍序列,求兩個序列的卷積和。

解從信號序列n的范圍可見,f2的時間軸起點不是n=0,因此,該程序需使用卷積子函數(shù)convnew進行計算。

編寫MATLAB程序如下:

nf1=0:10;%f1的時間向量

f1=0.5*nf1;

nf2=-2:10;%f2的時間向量

nt=length(nf2);%取f2時間向量的長度

f2=ones(1,nt);[y,ny]=convnew(f1,nf1,f2,nf2);%調(diào)用convnew卷積子函數(shù)

subplot(2,2,1),stem(nf1,f1,¢filled¢);%顯示f1信號

subplot(2,2,2),stem(nf2,f2,¢filled¢);%顯示f2信號

subplot(2,1,2),stem(ny,y,¢filled¢);%卷積積分結果

程序執(zhí)行的結果如圖5-3所示。

圖5-3例5-3f1(n)、f2(n)、y(n)的波形

例5-4

已知一個IIR數(shù)字低通濾波器的系統(tǒng)函數(shù)公式為

輸入一個矩形信號序列

x=square(n/5)(-2<n<10p)

求該系統(tǒng)的響應。

編寫MATLAB程序如下:

nx=-2:10*pi;x=square(nx/5);%產(chǎn)生輸入信 號序列

subplot(3,1,1);stem(nx,x,¢filled¢);

a=[1,-0.34319,0.60439,-0.20407];

b=[0.1321,0.3963,0.3963,0.1321];

nh=0:9;

hn=impz(b,a,nh);%求系統(tǒng)的單位沖激響應

subplot(3,1,2);stem(nh,hn,¢filled¢);

[y,ny]=convnew(x,nx,hn,nh);%調(diào)用 convnew卷積子函數(shù)

subplot(3,1,3);stem(ny,y,¢filled¢);

程序執(zhí)行的結果如圖5-4所示。

圖5-4例5-4x(n)、h(n)、y(n)的波形

4.卷積積分的動態(tài)過程演示

為了更深入地理解兩個序列卷積的原理,下面提供一段演示卷積積分的動態(tài)過程的MATLAB程序。

例5-5

動態(tài)地演示例5-1求解信號序列

f1=0.8n(0<n<20)

f2=u(n)(0<n<10)

卷積和的過程。編寫MATLAB程序如下:

clf; %圖形窗清屏

nf1=0:20; %建立f1的時間向量

f1=0.8.^nf1; %建立f1序列

lf1=length(f1);%取f1時間向量的長度

nf2=0:10; %f2的時間向量

lf2=length(nf2);%取f2時間向量的長度

f2=ones(1,lf2);%建立f2序列

lmax=max(lf2,lf1);%求最長的序列

iflf2>lf1nf2=0;nf1=lf2-lf1;%若f2比f1長,對f1補 nf1個0

elseiflf2<lf1nf1=0;nf2=lf1-lf2;%若f1比f2長,對 f2補nf2個0

elsenf2=0;lf1=0; %若f1與f2同長,不補0

end

lt=lmax; %取長者為補0長度基礎

%先將f2補得與f1同長,再將兩邊補最大長度的0

u=[zeros(1,lt),f2,zeros(1,nf2),zeros(1,lt)];

t1=(-lt+1:2*lt);

%先將f1補得與f2同長,再將左邊補2倍最大長度的0

f1=[zeros(1,2*lt),f1,zeros(1,nf1)];

hf1=fliplr(f1); %將f1作左右反折

N=length(hf1);

y=zeros(1,3*lt); %將y存儲單元初始化

fork=0:2*lt %動態(tài)演示繪圖

p=[zeros(1,k),hf1(1:N-k)];%使hf1向右循環(huán) 移位

y1=u.*p;[KG-4] %使輸入和翻轉移位的脈沖過 渡函數(shù)逐項相乘

yk=sum(y1); %相加

y(k+lt+1)=y(tǒng)k;%將結果放入數(shù)組y

subplot(4,1,1);stem(t1,u);

subplot(4,1,2);stem(t1,p);

subplot(4,1,3);stem(t1,y1);

subplot(4,1,4);stem(k,yk);%作圖表示每一次卷 積的結果

axis([-20,50,0,5]);holdon[KG-1] %在圖形 窗上保留每一次運行的圖形結果

pause(1); %停頓1秒鐘

end四、實驗任務

(1)輸入并運行例題程序,理解每一條語句的意義。

(2)編寫MATLAB程序,描繪下列信號序列的卷積波形:

①f1(n)=d(n-1),f2(n)=u(n-2),(0≤n<10)

②f1(n)=u(n),f2(n)=e0.2nu(n),(0≤n<10)

③x(n)=sinn ,h(n)=(0.5)n,(

溫馨提示

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

評論

0/150

提交評論