《數(shù)字信號處理實驗一.ppt》由會員分享,可在線閱讀,更多相關《數(shù)字信號處理實驗一.ppt(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、下載地址:,ftp://192.168.1.253 用戶名:student 密碼:student 目錄:數(shù)字信號處理-第一次實驗,數(shù)字信號處理實驗,測控技術與儀器研究室 指導教師:林曉鋼 ,實驗一 離散時間信號分析,2011年10月,實驗目的,1掌握各種常用的序列,理解其數(shù)學表達式和波形表示。 2掌握在計算機中生成及繪制數(shù)字信號波形的方法。 3掌握序列的相加、相乘、移位、反轉等基本運算及計算機實現(xiàn)與作用。 4掌握線性卷積軟件實現(xiàn)的方法。 5掌握計算機的使用方法和相關應用軟件的使用。 6通過編程,上機調試程序,進一步增強使用計算機解決問題的能力。,實驗原理,1序列的基本概念,離散時間信號在數(shù)學上
2、可用時間序列x(n)來表示,其中x(n)代表序列的第n個數(shù)字,n代表時間的序列。注意: x(n)只 在 n 為 整 數(shù) 時 才 有 意 義, n 不 是 整 數(shù) 時 無 定 義, 但 不 能 認 為 是 0。 離散時間信號可以是由模擬信號通過采樣得到,例如對模擬信號xa(t)進行等間隔采樣,采樣間隔為T,得到一個有序的數(shù)字序列xa(nT)就是離散時間信號,簡稱序列。,實驗原理,2常用序列,單位脈沖序列(單位抽樣)、單位階躍序列、矩形序列、實指數(shù)序列、復指數(shù)序列、正弦型序列等。,方法1 n1 = -5:5; x1=(n1-0)==0; %顯然,用邏輯式是比較高明的方法 stem(n1,x1)
3、; %作用是繪制以n1為橫坐標,x1為縱坐標的離散桿圖 title(單位脈沖序列); %繪圖標題 axis(-5,5,0,1); %橫坐標從-5到5,縱坐標從0到1 方法2 x=1 zeros(1,N-1); % 產(chǎn)生長度為N的單位脈沖序列,實驗原理,2常用序列,單位脈沖序列(單位抽樣)、單位階躍序列、矩形序列、實指數(shù)序列、復指數(shù)序列、正弦型序列等。,clear; n1 = -5:5; x1=(n1-0)=0; % 用邏輯式是比較高明的方法 stem(n1,x1); title(階躍序列); axis(-5,5,0,1.1);,實驗原理,2常用序列,clear; n1 =
4、 -5:5; x1=(n1-0)=0; x2=(n1-3=0); x3=x1-x2; stem(n1,x3);title(矩形序列) axis(-5,5,0,1.1),實驗原理,2常用序列,,式中0為數(shù)字頻率,clear; n1 = 0:40; x1=exp((0.1+(pi/6)*i)*n1); subplot(2,1,1); stem(n1,real(x1));title(復指數(shù)序列); ylabel(實部); subplot(2,1,2); stem(n1,imag(x1)); ylabel(虛部);,實驗原理,2常用序列,clear; n = 0:40; x1=3*cos(0.1*pi
5、*n+pi/3); x2=2*sin(0.2*pi*n); subplot(2,1,1); stem(n,x1);title(余弦序列); subplot(2,1,2); stem(n,x2);title(正弦序列);,實驗原理,2序列的基本運算,2.1 序列的加法 :z(n)=x (n)+y(n) 加法用于序列的合成。它把兩個序列中位置序號相同的樣本相加,形成新的樣本序列。,function y,n = seqadd(x1,n1,x2,n2) % y,n = seqadd(x1,n1,x2,n2) % ----------------------------- % 實現(xiàn)y(n) = x1(
6、n)+x2(n) % y = 在包含n1和n2的n點上求序列和, % x1 = 在位置向量n1上的第一序列 % x2 = 在位置向量n2上的第二序列(n2可與 n1不同) n = min(min(n1),min(n2)):max(max(n1),max(n2)); % y(n)的長度 y1 = zeros(1,length(n)); y2 = y1; % 初始化 y1(find((n=min(n1)) % 序列相加,實驗原理,2序列的基本運算,2.2 序列的乘法 :z(n)=x(n)y(n) 序列的乘法是一種非線性運算,它用于信號的調制。它把兩個序
7、列中位置序號相同的樣本相乘,形成新的樣本序列。例如:,在MATLAB中序列加法可用算術運算符“+”實現(xiàn),序列乘法要用點乘運算符“.*”實現(xiàn)。然后首先必須使x1和x2的位置向量的起點、終點相同,長度相等。 Matrix dimensions must agree.,,實驗原理,2序列的基本運算 (乘法),function y,n = seqmult(x1,n1,x2,n2) % y,ny = seqmult(x1,n1,x2,n2) % ----------------------------- % 實現(xiàn) y(n) = x1(n)*x2(n) % y = 在n區(qū)間上的乘積序列,ny 包含 n1
8、和 n2 % x1 = 在 n1上的第一序列 % x2 = 在 n2上的第二序列(n2可與 n1不同) n = min(min(n1),min(n2)):max(max(n1),max(n2)); % y(n)的位置向量 y1 = zeros(1,length(n)); y2 = y1; % y1,y2初始置零 y1(find((n=min(n1)) % 序列相乘,例:求序列x1和x2的和與乘積。,x1=0,1,2,3,4,3,2,1,0;ns1=-2;% 給定x1及ns1 x2=2,2,0,0,0,-2,-2; ns2=2;% 給定x2及ns
9、2 nf1=ns1+length(x1)-1; nf2=ns2+length(x2)-1; ny= min(ns1,ns2):max(nf1,nf2); % y(n)的位置向量 y1 = zeros(1,length(ny)); y2 = y1; % 延拓序列初始化 y1(find((ny=ns1) % 序列相乘,畫圖,subplot(4,2,1), stem(ns1:nf1,x1,.)% 繪圖 xlabel(nx1),ylabel(x1),axis(-5,10,0,4) subplot(4,2,3), stem(ns2:nf2,x2,.),axis(-5,10,-2,2)
10、 xlabel(nx2),ylabel(x2) subplot(4,2,2), stem(ny,y1,.)% 繪圖 xlabel(ny),ylabel(y1) subplot(4,2,4), stem(ny,y2,.) xlabel(ny),ylabel(y2) line(ny(1),ny(end),0,0)% 畫x軸 subplot(4,2,6), stem(ny,ya,.) xlabel(ny),ylabel(ya) line(ny(1),ny(end),0,0)% 畫x軸 subplot(4,2,8), stem(ny,yp,.) xlabel(ny),ylabel(yp) line(n
11、y(1),ny(end),0,0)% 畫x軸 set(gcf,color,w) % 置圖形背景色為白,,實驗原理,2序列的基本運算,2.3 序列的移位 :y(n)=x(n-k) 在這個運算中,x(n)的每一個樣本都向右移動k個采樣周期。實際上, x(n-k)取的是序列過去的值,具有物理可實現(xiàn)性;而x(n+k) 要知道序列未來的值,物理上無法直接實現(xiàn)。所以數(shù)字信號處理中通常都用序列右移。,function y,ny = seqshift(x,nx,n0) % y,ny = seqshift(x,nx,n0) % ------------------------- % 實現(xiàn) y(n) = x
12、(n-n0) % n0為平移樣本數(shù) ny = nx + n0; % 位置向量移位 y = x; % 序列的值不變,實驗原理,2序列的基本運算,2.4 序列的反轉 :y(n)=x(-n) 在這個運算中,x(n)的每一個樣本都對縱坐標軸n=0做對稱翻轉(flip-flop)得到反轉后的序列。在MATLAB中,這一運算要兩次調用fliplr函數(shù)來實現(xiàn)。y=fliplr(x)的作用是把行向量x中元素排列的次序左右翻轉。ny=-fliplr(nx)既將其位置向量左右翻轉,又變了正負號。 程序: y = fliplr(x); % 將序列數(shù)值左右翻轉 ny = -fliplr(nx); %
13、將序列位置對零位置左右翻轉,故同時改變正負號,實驗原理,3序列的卷積,上式的運算關系稱為卷積運算,式中代表兩個序列卷積運算。兩個序列的卷積是一個序列與另一個序列反褶后逐次移位乘積之和,故稱為離散卷積,也稱兩序列的線性卷積。 四個步驟: (1)反轉:先將x(n)和h(n)的變量n換成m,變成x(m)和h(m) ,再將h(m)以縱軸為對稱軸反轉成h(-m) 。 (2)移位:將h(-m)移位n,得h(n-m) 。當n為正數(shù)時,右移n位;當n為負數(shù)時,左移n位。 (3)相乘:將h(n-m)和x(m)的對應點值相乘。 (4)求和:將以上所有對應點的乘積累加起來,即得y(n) 。,function y,
14、ny = seqfold(x,nx) y = fliplr(x); ny = -fliplr(nx);,function y,ny = seqshift(x,nx,n0) ny = nx + n0; y = x;,function y,ny = seqmult(x,nx,h2,nh2),y = sum(y1),函數(shù)調用,x1=0,1,2,3,4,3,2,1,0; n1=-2:6;% 給定x1及ns1 x2=2,2,0,0,0,-2,-2; n2=2:8; y,n = seqadd(x1,n1,x2,n2); stem(n,y);,實驗內容,1、用matlab編制信號產(chǎn)生子程序,產(chǎn)生以下典型信號
15、序列。,,實驗內容,2、利用MATLAB編程完成序列(5)和(6)的移位、反轉、加法、乘法等運算,并繪制運算后序列的波形。,,3、利用MATLAB編制一個計算兩個序列線性卷積的通用程序,計算上述兩序列,并繪制卷積后序列的波形。,實驗報告要求,1簡述實驗原理及目的。 2給出上述序列的實驗結果。 3列出計算卷積的公式,畫出程序框圖,并列出實驗程序清單(包括必要的程序說明)。 4記錄調試運行情況及所遇問題的解決方法。 5給出實驗結果,并對結果做出分析。 6簡要回答思考題。 如何產(chǎn)生方波信號序列和鋸齒波信號序列? 實驗中所產(chǎn)生的正弦序列的頻率是多少?是否是周期序列?,實驗報告封面格式,實驗課程名稱:數(shù)字信號處理 開 課 實驗 室:測控技術與儀器研究室 學 院:光電工程學院 年級 2009 專業(yè)班 XXX 學 生 姓 名: XXX 學號 2009XXXX 開 課 時 間: 2011 至 2012學年 第 1 學期,實驗報告封面格式,開課學院實驗室:光電工程學院、測控技術與儀器研究室 實 驗 時 間:2011年10月25日 學生 : XXX 專業(yè)班、年級 XXX 2009,測控技術與儀器研究室,下載地址:,ftp://192.168.1.253 用戶名:student 密碼:student 目錄:數(shù)字信號處理-第一次實驗,