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

下載本文檔

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

文檔簡介

數(shù)字信號處理實驗教案數(shù)字信號處理實驗教案(1112341用)王新民湖北工程學(xué)院物理與電子信息工程學(xué)院目錄數(shù)字信號處理實驗要求 1預(yù)備實驗用于信號處理的MATLAB基本操作 2實驗一系統(tǒng)響應(yīng)及系統(tǒng)穩(wěn)定性 4實驗二時域采樣與頻域采樣 9實驗三用FFT對信號作頻譜分析 13實驗四IIR數(shù)字濾波器設(shè)計及軟件實現(xiàn) 18實驗五FIR數(shù)字濾波器設(shè)計與軟件實現(xiàn) 23附錄 31附錄1:MATLAB編程及繪圖方法 31附錄2:MATLAB矩陣及矩陣的運算 38

信號處理實驗要求一、實驗課程任務(wù)與要求實驗?zāi)康男盘柼幚韺嶒灲虒W(xué)是為了將學(xué)生的計算機(jī)操作能力、分析能力、軟件設(shè)計能力與應(yīng)用實踐結(jié)合起來,引導(dǎo)學(xué)生由淺入深地掌握信號處理理論與開發(fā)工具,具備實際應(yīng)用的信號處理軟件開發(fā)與制作基礎(chǔ)。

2.實驗基本要求(以軟件設(shè)計為主要表現(xiàn)形式)(1)上機(jī)前應(yīng)準(zhǔn)備好實驗的程序設(shè)計算法描述與關(guān)鍵分析內(nèi)容;(2)準(zhǔn)備好程序測試數(shù)據(jù)和設(shè)備操作步驟,上機(jī)調(diào)試、運行;(3)完成每個實驗后進(jìn)行數(shù)據(jù)與程序?qū)Ρ确治?;?)遞交實驗結(jié)果的可執(zhí)行程序、源程序并演示實驗結(jié)果;(5)寫出實驗報告。二、實驗學(xué)時安排預(yù)備實驗用于信號處理的MATLAB基本操作(3學(xué)時)實驗一系統(tǒng)響應(yīng)及系統(tǒng)穩(wěn)定性(3學(xué)時)實驗二時域采樣與頻域采樣(3學(xué)時)實驗三用FFT對信號作頻譜分析(3學(xué)時)實驗四IIR數(shù)字濾波器設(shè)計及軟件實現(xiàn)(3學(xué)時)實驗五FIR數(shù)字濾波器設(shè)計與軟件實現(xiàn)(3學(xué)時)三、實驗報告格式姓名:________________學(xué)號:_______________實驗日期:_______________實驗題目:實驗?zāi)康模簩嶒瀮?nèi)容:實驗地點:實驗結(jié)果:(包括列出實驗編寫的所有文件及各項實驗結(jié)果的曲線,并加注必要的說明)結(jié)果分析:(包括回答實驗指導(dǎo)書中提出的問題)總結(jié):四、實驗考核(1)實驗預(yù)習(xí)報告;(2)實驗簽到;(3)上機(jī)實際操作;(4)實驗設(shè)計報告;五、教材及參考書1.教材:[1]高西全,丁玉美.數(shù)字信號處理(第三版)西電出版社,2008.32.參考書:[1]張志勇等.MATLAB教程R2010a.北京航空航天大學(xué)出版社.2010.8[2]陳懷琛等.MATLAB及在電子信息課程中的應(yīng)用.電子工業(yè)出版社.2002[3]程佩清.數(shù)字信號處理教程[M].清華大學(xué)出版社.2003預(yù)備實驗用于信號處理的MATLAB基本操作=1\*Arabic1.實驗?zāi)康模簩W(xué)習(xí)和掌握MATLAB最基本的矩陣運算與繪圖工具。學(xué)習(xí)用MATLAB實現(xiàn)信號處理的基本操作。=2\*Arabic2.實驗步驟:熟悉MATLAB的使用環(huán)境和方法。練習(xí)使用基本的向量生成、矩陣運算、繪圖等語句。利用冒號(:)生成向量X1=[12345]X2=[1.0001.5002.0002.500]X3=[54321]分別生成3*3,3*4的全0矩陣,全1矩陣和隨機(jī)矩陣分別輸入矩陣1231.01.11.2A=456B=2.02.12.27893.03.13.2分別計算A+B,A-B,A+3,A-4,A*B,A.*B,C=inv(A),A/B,A./B分別計算sin(x1),cos(x1),exp(x1),lg(x2),sqrt(x2)=3\*Arabic3.實驗說明向量的生成利用冒號(:)生成向量X=j:k(j<k)生成X=[j,j+1,j+2,…,k-1,k]X=j:I:k如果I>0且j<k或I<0且j>k,則生成向量X=[j,j+I,j+2I,…,k-I,k]如果I<0且j>k,則生成向量X=[j,j+I,j+2I,…,k]例X1=1:5X1=[12345]X2=1:0.5:3X2=[1.0001.5002.0002.5003.000]X3=5:-1:1X3=[54321]矩陣的生成Zeros生成全0陣B=Zeros(n)生成n*n的全0矩陣B=Zeros(m,n)生成m*n的全0矩陣B=Zeros(Size(A))生成與與矩陣A大小相同的全0矩陣注:m,n必須是一個非負(fù)數(shù)ones生成全1陣rand生成均勻分布的隨機(jī)陣二矩陣的算術(shù)運算加法和減法對于同維矩陣指令的A+BB對于矩陣和標(biāo)量(一個數(shù))的加減運算,指令為:A+39乘法和除法運算A*B是數(shù)學(xué)中的矩陣乘法,遵循矩陣乘法規(guī)則A.*B是同維矩陣對應(yīng)位置元素做乘法B=inv(A)是求矩陣的逆A/B是數(shù)學(xué)中的矩陣除法,遵循矩陣除法規(guī)則A./B是同維矩陣對應(yīng)位置元素相除另表示矩陣的轉(zhuǎn)置運算三.?dāng)?shù)組函數(shù)下面列舉一些基本函數(shù),他們的用法和格式都相同。Sin(A),cos(A),exp(A),log(A)(相當(dāng)于ln)Sgrt(A)開平方abs(A)求模real(A)求實部imag(A)求虛部式中A可以是標(biāo)量也可以是矩陣?yán)豪玫炔钕蛄慨a(chǎn)生一個正弦值向量t=0:0.1:10A=sin(t)PLot(A)這時候即可看到一個繪有正弦曲線的窗口彈出另:每條語句后面加“;”表示不要顯示當(dāng)前語句的執(zhí)行結(jié)果不加“;”表示要顯示當(dāng)前語句的執(zhí)行結(jié)果。練習(xí):t=0:0.01:1;y=sin(2*pi*t);plot(t,y);xlabel('0-1');ylabel('-1-1');text(0.6,0,'y=sin(2*pi*t)');H=legend('sin');四.繪圖(二維繪圖)格式1:plot(y);%繪連續(xù)曲線圖。stem(y);%繪離散序列波形圖。y是一個數(shù)組,給出線性直角坐標(biāo)的二維圖,以y中元素的下標(biāo)作為橫坐標(biāo),y中元素的值作為縱坐標(biāo),一一對應(yīng)畫在平面圖上。(默認(rèn)為點點之間用直線連接起來)格式2:plot(x,y);%繪連續(xù)曲線圖。stem(x,y);%繪離散序列波形圖。x,y都是數(shù)組,且具有相同的長度,以x元素為橫坐標(biāo),y元素的值為縱坐標(biāo),一一對應(yīng)畫在平面圖上線型、點型和顏色:MATLAB會自動設(shè)定所畫曲線的顏色和線型??勺詣釉O(shè)置,在輸入變量組后,加一個引號,在引號內(nèi)部放入線型和顏色的標(biāo)識符。格式:3:plot(x,y,’*b’);%繪連續(xù)曲線圖。stem(x,y,’*b’);%繪離散序列波形圖。下面給出常用選項。r紅,g綠,b藍(lán),y黃,m洋紅,c青,w白,k黑,━實線,┅┅虛線,*用星號標(biāo)數(shù)據(jù)點,用點標(biāo)o(字母‘o‘)用圓圈標(biāo),x(字母’x‘)用叉標(biāo),-.點劃線,下面給出窗口分割語句subplot(x,y,n)將一個窗口分割成x行,y列共x*y個窗口例subplot(3,2,2)分割3*2個窗口。五.閱讀材料附錄1MATLAB編程及繪圖方法附錄2MATLAB矩陣及矩陣的運算附錄1:MATLAB編程及繪圖方法1.1MATLAB變量1.1MATLAB通過變量名來調(diào)用變量,變量的命名規(guī)則同C語言:以字母開頭,由字母、下劃線和數(shù)字組成,注意區(qū)分大小寫,長度不超過31個。1.2MATLAB常用運算符(如表1)1.2表1常用運算符算術(shù)運算符運算功能+加法-減法/(./)矩陣右除(矩陣元素右除)\(.\)矩陣左除(矩陣元素左除)*(.*)矩陣乘(矩陣元素乘)∧(.∧)矩陣求冪(矩陣元素求冪)()優(yōu)先運算,下標(biāo),輸入變量[]生成矩陣,放輸出變量%注釋符‘矩陣求共軛轉(zhuǎn)置關(guān)系運算符運算功能==等于~=不等于<=小于等于>=大于等于>大于<小于邏輯運算符運算功能&邏輯與|邏輯或~邏輯非1.3MATLAB常用的數(shù)學(xué)運算函數(shù)1.3表2常用數(shù)學(xué)運算函數(shù)常用運算函數(shù)名運算功能sin(x)正弦cos(x)余弦tan(x)正切exp(x)指數(shù)imag(x)復(fù)數(shù)的虛部real(x)復(fù)數(shù)的實部conj(x)復(fù)數(shù)的共軛log(x)、log2(x0、log10(x)以自然數(shù)e(2、10)為底的對數(shù)sqrt(x)平方根round(x)四舍五入取整max(x)取數(shù)組的最大值min(x)取數(shù)組的最小值mean(x)取數(shù)組的平均值std(x)取數(shù)組的標(biāo)準(zhǔn)差sum(x)數(shù)組求和說明:函數(shù)的調(diào)用格式為:[輸出參數(shù)1,輸出參數(shù)2,…]=函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2,…)1.41.4MATLAB常用作圖函數(shù)表3常用作圖函數(shù)函數(shù)名圖形表現(xiàn)形式plot(x),plot(x,y)將點用線連起來的連續(xù)波形stem(x)離散序列波形subplot(n1,n2)將圖形窗口分隔為n1*n2個hold保留目前圖形figure(n)打開一個新的圖形窗口grid畫成網(wǎng)格形title(‘字符串’)給圖形加標(biāo)題xlable(‘字符串’)給圖形窗口x軸加標(biāo)題xlable(‘字符串’)給圖形窗口y軸加標(biāo)題(1)繪制直角坐標(biāo)中的二維曲線:格式1:plot(y)y是一個數(shù)組,給出線性直角坐標(biāo)的二維圖,以y中元素的下標(biāo)作為橫坐標(biāo),y中元素的值作為縱坐標(biāo),一一對應(yīng)畫在平面圖上。(默認(rèn)為點點之間用直線連接起來)格式2:plot(x,y)x,y都是數(shù)組,且具有相同的長度,以x元素為橫坐標(biāo),y元素的值為縱坐標(biāo),一一對應(yīng)畫在平面圖上線型、點型和顏色:MATLAB會自動設(shè)定所畫曲線的顏色和線型??勺詣釉O(shè)置,在輸入變量組后,加一個引號,在引號內(nèi)部放入線型和顏色的標(biāo)識符。格式:3:plot(x,y,’*b’)例如:畫平面圖,在命令窗口輸入:>>X=1:5;>>Y=[0.7,0.5,0.2,-0.4,0.6];>>plot(X,Y)%畫連線圖,見圖1.1>>plot(X,Y,'*')%畫散點圖,見圖1.2圖1.2散點波形圖工作空間窗口圖1.1連續(xù)波形圖工作空間窗口圖1.2散點波形圖工作空間窗口圖1.1連續(xù)波形圖工作空間窗口(2)多條曲線的繪制格式1:plot(x,[y1;y2;…]),若x(列或行)與y=[y1;y2;..]中的(列或行)具有相同的長度,則y的行或列數(shù)就是曲線的個數(shù),自動給出曲線的顏色。t=0:0.5:4*piy1=exp(-0.1*t).*sin(t)y2=exp(-0.1*t).*sin(t+1)plot(t,[y1;y2])格式2:用hold命令,在畫完前一張圖后用hold命令保持住。t=0:0.5:4*piy1=exp(-0.1*t).*sin(t)y2=exp(-0.1*t).*sin(t+1)plot(t,y1)holdonplot(t,y2,’g’)注意及時解除保持狀態(tài),即鍵入holdoff,否則,以后的圖都會疊加在此圖上,造成混亂。格式3:在plot后使用多輸入變量plot(x1,y1,x2,y2,…,xn,yn)每對數(shù)組可以繪出一條曲線。t=0:0.5:4*piy1=exp(-0.1*t).*sin(t)y2=exp(-0.1*t).*sin(t+1)plot(t,y1,t,y2,’g’)格式4:用plotyy命令,設(shè)有兩個縱坐標(biāo)t=0:0.5:4*piy1=exp(-0.1*t).*sin(t)y2=exp(-0.1*t).*sin(t+1)plotyy(t,y1,t,y2)(3)圖象屏幕控制命令圖象屏幕可開可關(guān),可以打開幾處圖形窗,也可以在一個圖象窗內(nèi)畫出幾幅分圖等。格式1:figure(n):打開圖形窗。MATLAB中的第一幅圖隨plot命令自動打開,以后的plot命令都畫在同一張圖上。如果要畫在另一張新圖上,就要用figure命令打開新的圖形窗口。打開后,需要指明畫在哪張圖上,否則,所有的圖都會畫在最后顯示的那幅圖上。格式2:clf:清除當(dāng)前圖形窗的內(nèi)容格式3:close:關(guān)閉當(dāng)前圖形窗格式4:closeall:關(guān)閉所有圖形窗格式5:subplot(n,m,p)將圖象窗口分為n*m個子圖,在p個子圖處繪制圖形t=0:0.5:4*pi;y=exp(-0.1*t).*sin(t);subplot(2,2,1);stem(t,y);title(‘stem(t,y)’);subplot(2,2,2);stairs(t,y);title(‘stairs(t,y)’);subplot(2,2,3);bar(t,y);title(‘bar(t,y)’);subplot(2,2,4);fill(t,y,’r’);title(‘fill(t,y)’);1.51.5與大多數(shù)計算機(jī)語言一樣,MATLAB提供了設(shè)計程序所必須的三種基本程序結(jié)構(gòu):順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)及分支結(jié)構(gòu)。eq\o\ac(○,1)順序結(jié)構(gòu)MATLAB的順序結(jié)構(gòu)就是由表達(dá)式構(gòu)成的語句,語句之間用逗號或分號隔開,這些語句按順序執(zhí)行。當(dāng)表達(dá)式后面接分號時,表達(dá)式的結(jié)果不顯示出來,保留在內(nèi)存中。eq\o\ac(○,2)循環(huán)結(jié)構(gòu)MATLAB的循環(huán)結(jié)構(gòu)就是根據(jù)一定的條件多次重復(fù)執(zhí)行的一段指令。循環(huán)控制由for和while語句實現(xiàn)。for-end循環(huán)for語句的基本格式為:for循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3循環(huán)語句組end說明:表達(dá)式1的值是循環(huán)變量的初值表達(dá)式2的值是每執(zhí)行一次循環(huán)變量要增加的值表達(dá)式3的值是用來判斷循環(huán)變量是否介于表達(dá)式1和表達(dá)式3之間,,如果條件滿足則執(zhí)行循環(huán),如果條件不滿足則結(jié)束循環(huán)。舉例:1.利用for循環(huán)求離散傅立葉變換(DFT)。部分源程序如下:N=length(x);X=zeros(1,N);fork=0:N-1forn=0:N-1X(k+1)=X(k+1)+x(n+1)*exp(-j*2*pi/N*n*k);endendwhile-end循環(huán)while語句的基本格式為:while條件循環(huán)語句組end說明:while語句的執(zhí)行方式為:判斷條件成立否,執(zhí)行循環(huán)語句組,執(zhí)行后再判斷條件是否成立,如果不成立就結(jié)束循環(huán)。eq\o\ac(○,3)分支結(jié)構(gòu)if-else-end結(jié)構(gòu)最簡單的格式為:if條件表達(dá)式表達(dá)式為真時的語句組end如果再多一個分支,格式為:if條件表達(dá)式表達(dá)式為真時的語句組else表達(dá)式為假時的語句組end如果有多個程序分支,可以用switch語句,格式為:switch條件表達(dá)式case值1表達(dá)式的值=值1為真時的語句組case值2表達(dá)式的值=值2為真時的語句組otherwise上述結(jié)果為假時的語句組endeq\o\ac(○,3)程序的優(yōu)化循環(huán)程序優(yōu)化要盡可能使用向量或矩陣編程,而不是像在其它語言中對向量或矩陣的元素編程,這樣做,不但可以使程序較短,而且大大提高執(zhí)行的效率。例如:一般循環(huán)編程,存為ex_1.mx=1;fork=1:1001y(k)=log10(x)x=x+0.01end改為向量化編程,存為ex_2.mx=1:0.01:10;y=log10(x);比較這兩個M文件的運行時間,在命令窗口運行:>>tic>>ex_1>>tocelapsed_time=0.3800>>tic>>ex_2>>tocelapsed_time=0前一個用時0.38秒,而后一個幾乎無等待。數(shù)組的優(yōu)化數(shù)組的預(yù)定義可以提高內(nèi)存的利用率,不使用預(yù)定義,數(shù)組的多次擴(kuò)維會增加內(nèi)存的碎片。例如:一個不預(yù)定義的循環(huán)程序存為ex_3.mfork=1:100r(k)=rank(magic(k));end改為一個預(yù)定義的相同運算的程序存為ex_4.mr=zeros(100,1);fork=1:100r(k)=rank(magic(k));end在命令窗口運行,比較兩個文件的運行時間ex_3.m>>tic>>ex_3>>tocelapsed_time=1.1000>>tic>>ex_4>>tocelapsed_time=1.0400前一個用時比后一個長。附錄2:MATLAB矩陣及矩陣的運算簡易矩陣矩陣須用中括號[]將元素置于其中。陣列為一維元素所構(gòu)成,而矩陣為多維元素所組成:例如>>x=[12345678];%一維1×8陣列>>x=0:0.02:1;%以起始值=0、增量值=0.02、終止值=1的矩陣(陣列),又稱為冒號運算>>x=linspace(0,1,100);%利用linspace函數(shù),起始值=0,終止值=1,以等間隔(1-0)/100劃分,元素數(shù)目為100。提取矩陣中的元素A(i,j)表示矩陣A的第i行、第j列交叉點處的元素;得到矩陣A第三行第二列的元素>>A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15];>>AA=123456789101112131415MATLAB的序號排列從第一列第一行到第一列最后一行,直至最后一列最后一行>>A(6)MATLAB的序號排列從第一列第一行到第一列最后一行,直至最后一列最后一行12A(u,v)提取A的子矩陣,u,v是兩個向量,分別指定行與列;調(diào)用格式:A(L1,:)表示提取A的L1指定的行、所有列;A(:,L2)表示提取A的所有行,L2指定的列;A(L1,L2)表示提取A的L1指定的行,L2指定的列構(gòu)成子矩陣。例2:提取矩陣A的子矩陣:>>A([1,3],:)%提取A中第1和第三行所有的列元素ans=123451112131415>>A(:,[2,4,5])%提取A中第2,4,5列所有的行元素ans=2457910121415例3:將向量中滿足不超過0.5的元素提取出來>>rand(‘seed’,0);%把均勻分布的偽隨機(jī)發(fā)生器置為初始狀態(tài)>>x=rand(1,10);%產(chǎn)生1X10的均布隨機(jī)矩陣>>x=Columns1through60.95010.23110.60680.48600.89130.7621Columns7through100.45650.01850.82140.4447>>L=x<=0.5;>>x=x(L)x=0.23110.48600.45650.01850.4447例4刪除A的2,4,6列>>A=[1,2,3,4,5,6;7,8,9,10,11,12;13,14,15,16,17,18];>>A(:,[2,4,6])=[]A=1357911131517例5將A擴(kuò)展為4X4的矩陣>>A(4,4)=0A=1

溫馨提示

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

最新文檔

評論

0/150

提交評論