版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章MATLAB程序設(shè)計(jì)語(yǔ)言在信號(hào)處理中的應(yīng)用8.1概述8.2基本數(shù)值運(yùn)算8.3基本語(yǔ)句8.4MATLAB函數(shù)8.5MATLAB在信號(hào)處理中的應(yīng)用舉例第8章MATLAB程序設(shè)計(jì)語(yǔ)言8.1概述18.1概述8.1.1MATLAB程序設(shè)計(jì)語(yǔ)言簡(jiǎn)介MATLAB,MatrixLaboratory的縮寫(xiě),是由Mathworks公司開(kāi)發(fā)的一套用于科學(xué)工程計(jì)算的可視化高性能語(yǔ)言,具有強(qiáng)大的矩陣運(yùn)算能力。與大家常用的Fortran和C等高級(jí)語(yǔ)言相比,MATLAB的語(yǔ)法規(guī)則更簡(jiǎn)單,更貼近人的思維方式,被稱(chēng)之為“草稿紙式的語(yǔ)言”。截至目前,MATLAB已經(jīng)發(fā)展到12.1版,適用于所有32位的Windows操作系統(tǒng),按NTFS(NT文件系統(tǒng))格式下完全安裝約需850MB。MATLAB軟件主要由主包、仿真系統(tǒng)和工具箱三大部分組成。8.1概述8.1.1MATLAB程序設(shè)計(jì)語(yǔ)言簡(jiǎn)介28.1.2MATLAB應(yīng)用入門(mén)1.MATLAB的安裝與卸載MATLAB軟件在用戶(hù)接口設(shè)計(jì)上具有較強(qiáng)的親和力,其安裝過(guò)程比較典型,直接運(yùn)行光盤(pán)中的安裝向?qū)е纬绦騍ETUP.exe,按其提示一步步選擇即可。MATLAB自身帶有卸載程序,在其安裝目錄下有uninstall子目錄,運(yùn)行該目錄下的uninstall.exe即可;也可以通過(guò)Windows系統(tǒng)的安裝卸載程序進(jìn)行卸載。8.1.2MATLAB應(yīng)用入門(mén)32.MATLAB的啟動(dòng)與退出MATLAB安裝完成后,會(huì)自動(dòng)在Windows桌面上生成一個(gè)快捷方式,它是指向安裝目錄下\bin\win32\matlab.exe的鏈接,雙擊它即可來(lái)到MATLAB集成環(huán)境的基本窗口,通常稱(chēng)之為命令窗口。MATLAB的退出與普通WIN32的程序一樣,值得一提的是它有一個(gè)自身專(zhuān)有的快捷鍵Ctrl+Q。2.MATLAB的啟動(dòng)與退出43.MATLAB界面簡(jiǎn)介圖8-1MATLAB基本界面——命令窗口3.MATLAB界面簡(jiǎn)介圖8-1MATLAB基本界面51)菜單欄菜單欄中包括File、Edit、View、Web、Window和Help六個(gè)菜單項(xiàng)。這里著重介紹File項(xiàng)。File項(xiàng)是數(shù)據(jù)輸入/輸出的接口,包括10個(gè)子項(xiàng),這里重點(diǎn)介紹其中的5個(gè)子項(xiàng):New:新建文件項(xiàng)。有四個(gè)選擇:MFile(.M,文本格式的MATLAB程序文件,可以直接通過(guò)文件名的方式在MATLAB環(huán)境下解釋運(yùn)行);Figure(圖形);Model(仿真模型文件)和GUI(可視化界面文件)。1)菜單欄6Open:打開(kāi)所有MATLAB支持的文件格式,系統(tǒng)將自動(dòng)識(shí)別并采用相應(yīng)的程序?qū)ξ募M(jìn)行處理。例如,打開(kāi)一個(gè).m文件,系統(tǒng)將自動(dòng)打開(kāi)M文件編輯器對(duì)它進(jìn)行編輯。ImportData...:導(dǎo)入用于MATLAB處理的數(shù)據(jù)函數(shù),包括各種圖像文件、聲音文件和.mat文件。SaveWorkspaceAs...:將工作空間的變量以.mat(二進(jìn)制)或ASCII文本的形式存入文件。SetPath...:設(shè)置工作路徑??梢源蜷_(kāi)路徑設(shè)置(SetPath)對(duì)話(huà)框(圖8-2),將用戶(hù)自己建立的目錄加入MATLAB的目錄系統(tǒng)中,以便所編制的文件能夠在MATLAB環(huán)境中直接調(diào)用。Open:打開(kāi)所有MATLAB支持的文件7圖8-2路徑設(shè)置對(duì)話(huà)框圖8-2路徑設(shè)置對(duì)話(huà)框8單擊AddFolder...按鈕可以將你的一個(gè)文件夾加入到系統(tǒng)路徑中;AddwithSubfolders...允許把一個(gè)文件夾包括其所有的子文件夾加入到系統(tǒng)路徑中。這兩種操作均可以直觀地在右側(cè)的路徑欄內(nèi)看到結(jié)果。選中一個(gè)加入的文件夾,你可以利用MovetoTop(移至所有路徑的最前面),MoveUp(上移一個(gè)),MoveDown(下移一個(gè)),MovetoBottom(移至所有路徑的最后面)等四個(gè)按鈕將改變文件在系統(tǒng)路徑中的排列位置以利于對(duì)文件的搜索使用,也可以利用Remove按鈕將其刪除。對(duì)路徑操作完畢后,按Save按鈕予以保存;按Close按鈕關(guān)閉本對(duì)話(huà)框;按Revert按鈕取消所有未保存的改動(dòng);按Default按鈕將還原到MATLAB安裝時(shí)的路徑設(shè)置;按Help按鈕則啟動(dòng)幫助系統(tǒng)解答疑難。單擊AddFolder...按鈕可以將92)命令行區(qū)對(duì)輸入命令的解釋MATLAB按以下順序進(jìn)行:①檢查它是否是工作空間中的變量,是則顯示變量?jī)?nèi)容。②檢查它是否是嵌入函數(shù),是則運(yùn)行之。③檢查它是否是子函數(shù)。④檢查它是否是私有函數(shù)。⑤檢查它是否是位于MATLAB搜索路徑范圍內(nèi)的函數(shù)文件或腳本文件。請(qǐng)注意,如果有兩個(gè)以上的方案與輸入的命令相匹配,MATLAB將只執(zhí)行第一個(gè)匹配。2)命令行區(qū)104.MATLAB常用命令表8-1MATLAB常用命令4.MATLAB常用命令表8-1MATLAB常用命令11數(shù)字信號(hào)處理課件(第9章MATELAB的實(shí)現(xiàn))128.2基本數(shù)值運(yùn)算8.2.1MATLAB內(nèi)部特殊變量和常數(shù)MATLAB內(nèi)部有很多變量和常數(shù),用以表達(dá)特殊含義。常用的有:(1)變量ans:指示當(dāng)前未定義變量名的答案。(2)常數(shù)eps:表示浮點(diǎn)相對(duì)精度,其值是從1.0到下一個(gè)最大浮點(diǎn)數(shù)之間的差值。該變量值作為一些MATLAB函數(shù)計(jì)算的相對(duì)浮點(diǎn)精度,按IEEE標(biāo)準(zhǔn),eps=2-52,近似為2.2204e-016。8.2基本數(shù)值運(yùn)算8.2.1MATLAB內(nèi)部特殊變量和13(3)常數(shù)Inf:表示無(wú)窮大。當(dāng)輸入或計(jì)算中有除以0時(shí)產(chǎn)生Inf。(4)虛數(shù)單位i,j:表示復(fù)數(shù)虛部單位,相當(dāng)于 。(5)NaN:表示不定型值,是由0/0運(yùn)算產(chǎn)生的。(6)常數(shù)pi:表示圓周率π,其值為3.1415926535897…。(3)常數(shù)Inf:表示無(wú)窮大。當(dāng)輸入148.2.2變量類(lèi)型1.變量命名規(guī)則MATLAB中對(duì)變量的命名應(yīng)遵循以下規(guī)則:(1)變量名可以由字母、數(shù)字和下劃線(xiàn)混合組成,但必須以字母開(kāi)頭。(2)字符長(zhǎng)度不能大于31。(3)變量命名區(qū)分大小寫(xiě)。8.2.2變量類(lèi)型15
2.局部變量和全局變量局部變量是指那些每個(gè)函數(shù)體內(nèi)自己定義的,不能從其他函數(shù)和MATLAB工作空間訪(fǎng)問(wèn)的變量。全局變量是指用關(guān)鍵字“global”聲明的變量。全局變量名應(yīng)盡量大寫(xiě),并能反映它本身的含義。如果需要在工作空間和幾個(gè)函數(shù)中都能訪(fǎng)問(wèn)一個(gè)全局變量,必須在工作空間和這幾個(gè)函數(shù)中都聲明該變量是全局的。2.局部變量和全局變量168.2.3矩陣及其運(yùn)算MATLAB具有強(qiáng)大的矩陣運(yùn)算和數(shù)據(jù)處理功能,對(duì)矩陣的處理必須遵從代數(shù)規(guī)則。
1.矩陣生成
1)一般矩陣的生成對(duì)于一般的矩陣MATLAB的生成方法有多種。最簡(jiǎn)單的方法是從鍵盤(pán)直接輸入矩陣元素。直接輸入矩陣元素時(shí)應(yīng)注意:各元素之間用空格或逗號(hào)隔開(kāi),用分號(hào)或回車(chē)結(jié)束矩陣行,用中括號(hào)把矩陣所有元素括起來(lái)。8.2.3矩陣及其運(yùn)算17
例8-1在工作空間產(chǎn)生一個(gè)3×3矩陣A可用MATLAB語(yǔ)言描述如下:A=[123;456;789]或A=[123 456 789]運(yùn)行結(jié)果: A= 123 456 789例8-1在工作空間產(chǎn)生一個(gè)3×3矩陣A可用182)特殊矩陣的生成對(duì)于特殊的矩陣可直接調(diào)用MATLAB的函數(shù)生成。用函數(shù)zeros生成全0矩陣:格式B=zeros(m,n)生成m×n的全0陣。用函數(shù)ones生成全1矩陣:格式B=ones(m,n)生成m×n的全1陣。用函數(shù)eye生成單位陣:格式B=eye(m,n)生成m×n矩陣,其中對(duì)角線(xiàn)元素全為1,其他元素為0。2)特殊矩陣的生成19
2.矩陣的運(yùn)算矩陣的運(yùn)算有基本運(yùn)算和函數(shù)運(yùn)算兩種類(lèi)型?;具\(yùn)算包括矩陣的加、減、乘、除、乘方、求轉(zhuǎn)置、求逆等,其主要特點(diǎn)是通過(guò)MATLAB提供的基本運(yùn)算符+、-、*、/(\)、^等即可完成。函數(shù)運(yùn)算主要是通過(guò)調(diào)用MATLAB系統(tǒng)內(nèi)置的運(yùn)算函數(shù)來(lái)求取矩陣的行列式(det(A)),求秩(rank(A)),求特征值和特征向量([V,D]=eig(A)),求Jordan標(biāo)準(zhǔn)形(jordan(A))和矩陣分解等。需要用時(shí)可以參閱聯(lián)機(jī)幫助和相關(guān)參考書(shū)。2.矩陣的運(yùn)算20例8-2矩陣的基本運(yùn)算。 A=[1,2,3;4,5,6]; B=[6,5,4;3,2,1]; C=A+B%計(jì)算兩個(gè)矩陣的和 D=B′%計(jì)算矩陣B的轉(zhuǎn)置 E=A*D%做矩陣乘法,必須要滿(mǎn)足矩陣乘法的基本要求
%E應(yīng)該是2階方陣F=det(E)%求E的行列式值G=E^(-1)%求E的逆例8-2矩陣的基本運(yùn)算。21輸出結(jié)果:C= 777 777D= 63 52 41E= 2810 7328F=54G= 0.5185-0.1852 -1.35190.5185輸出結(jié)果:228.3基本語(yǔ)句8.3.1程序控制語(yǔ)句
1.循環(huán)語(yǔ)句MATLAB的循環(huán)語(yǔ)句包括for循環(huán)和while循環(huán)兩種類(lèi)型。1)for循環(huán)語(yǔ)法格式:for循環(huán)變量=起始值:步長(zhǎng):終止值循環(huán)體end8.3基本語(yǔ)句8.3.1程序控制語(yǔ)句23起始值和終止值為一整形數(shù),步長(zhǎng)可以為整數(shù)或小數(shù),省略步長(zhǎng)時(shí),默認(rèn)步長(zhǎng)為1。執(zhí)行for循環(huán)時(shí),判定循環(huán)變量的值是否大于(步長(zhǎng)為負(fù)時(shí)則判定是否小于)終止值,不大于(步長(zhǎng)為負(fù)時(shí)則小于)則執(zhí)行循環(huán)體,執(zhí)行完畢后加上步長(zhǎng),大于(步長(zhǎng)為負(fù)時(shí)則小于)終止值后退出循環(huán)。起始值和終止值為一整形數(shù),步長(zhǎng)可以為整數(shù)或24例8-3給矩陣A、B賦值。MATLAB語(yǔ)句及運(yùn)行結(jié)果如下:k=5;a=zeros(k,k)%矩陣賦零初值form=1∶kforn=1∶ka(m,n)=1/(m+n-1);endendfori=m∶-1∶1b(i)=i;end例8-3給矩陣A、B賦值。25運(yùn)行結(jié)果:a=1.00000.50000.33330.25000.20000.50000.33330.25000.20000.16670.33330.25000.20000.16670.14290.25000.20000.16670.14290.12500.20000.16670.14290.12500.1111b=12345運(yùn)行結(jié)果:262)while循環(huán)語(yǔ)法格式:while表達(dá)式循環(huán)體end其執(zhí)行方式為:若表達(dá)式為真(運(yùn)算值非0),則執(zhí)行循環(huán)體;若表達(dá)式為假(運(yùn)算結(jié)果為0),則退出循環(huán)體,執(zhí)行end后的語(yǔ)句。2)while循環(huán)27例8-4a=3;whileaa=a-1end輸出:a=2a=1a=0例8-4a=3;282.條件轉(zhuǎn)移語(yǔ)句條件轉(zhuǎn)移語(yǔ)句有if和switch兩種。1)if語(yǔ)句MATLAB中if語(yǔ)句的用法與其他高級(jí)語(yǔ)言相類(lèi)似,其基本語(yǔ)法格式有以下幾種:格式一:if邏輯表達(dá)式執(zhí)行語(yǔ)句end2.條件轉(zhuǎn)移語(yǔ)句29格式二:if邏輯表達(dá)式執(zhí)行語(yǔ)句1 else執(zhí)行語(yǔ)句2end格式三:if邏輯表達(dá)式1執(zhí)行語(yǔ)句1elseif邏輯表達(dá)式2執(zhí)行語(yǔ)句2end格式二:if邏輯表達(dá)式302)switch語(yǔ)句switch語(yǔ)句的用法與其他高級(jí)語(yǔ)言相類(lèi)似,其基本語(yǔ)法格式為:switch表達(dá)式(標(biāo)量或字符串)case值1語(yǔ)句1case值2語(yǔ)句2…otherwise語(yǔ)句nend2)switch語(yǔ)句318.3.2繪圖語(yǔ)句常用的MATLAB繪圖語(yǔ)句有figure、plot、subplot、stem等,圖形修飾語(yǔ)句有title、axis、text等。
1.figurefigure有兩種用法,只用一句figure命令,會(huì)創(chuàng)建一個(gè)新的圖形窗口,并返回一個(gè)整數(shù)型的窗口編號(hào)。figure(n)表示將第n號(hào)圖形窗口作為當(dāng)前的圖形窗口,并將其顯示在所有窗口的最前面;如果該圖形窗口不存在,則新建一個(gè)窗口,并賦以編號(hào)n。8.3.2繪圖語(yǔ)句32
2.plot線(xiàn)型繪圖函數(shù)。用法為plot(x,y,′s′)。參數(shù)x為橫軸變量,y為縱軸變量,s用以控制圖形的基本特征如顏色、粗細(xì)等,通??梢允÷裕S梅椒ㄈ绫?-2所示。表8-2常用繪圖參數(shù)的含義2.plot表8-2常用繪圖參數(shù)的含義33
3.Stem繪制離散序列圖,常用格式stem(y)和stem(x,y)分別和相應(yīng)的plot函數(shù)的繪圖規(guī)則相同,只是用stem命令繪制的是離散序列圖。
4.subplotsubplot(m,n,i)圖形顯示時(shí)分割窗口命令,把一個(gè)圖形窗口分為m行,n列,m×n個(gè)小窗口,并指定第i個(gè)小窗口為當(dāng)前窗口。3.Stem34
5.繪圖修飾命令在繪制圖形時(shí),我們通常需要為圖形添加各種注記以增加可讀性。在plot語(yǔ)句后使用title(′標(biāo)題′)可以在圖形上方添加標(biāo)題,使用xlabel(′標(biāo)記′)或ylabel(′標(biāo)記′)為X軸或Y軸添加說(shuō)明,使用text(X值、Y值、′想加的標(biāo)示′)可以在圖形中任意位置添加標(biāo)示。5.繪圖修飾命令35例8-5畫(huà)圖基本語(yǔ)句如圖8-3所示。圖8-3例8-5中繪制的幾種正弦波形例8-5畫(huà)圖基本語(yǔ)句如圖8-3所示。圖8-36MATLAB語(yǔ)句及運(yùn)行結(jié)果如下:x=0:0.1*pi:2*pi; %定義x向量figure(1); %創(chuàng)建一個(gè)新的圖形窗口,編號(hào)為1subplot(2,2,1); %將窗口劃分為2行,2列,在第1個(gè)窗口中作圖plot(x,sin(x)); %畫(huà)圖title(′正弦線(xiàn)′);%給圖形加標(biāo)題subplot(2,2,2); %在第2個(gè)窗口中作圖plot(x,sin(x),′r′);%畫(huà)一正弦波,紅色xlabel(′X′);%給x軸加說(shuō)明MATLAB語(yǔ)句及運(yùn)行結(jié)果如下:37ylabel(′SIN(X)′);%給y軸加說(shuō)明subplot(2,2,3); %在第2個(gè)窗口中作圖plot(x,sin(x),′--′);%畫(huà)一正弦波,破折線(xiàn)subplot(2,2,4);%在第2個(gè)窗口中作圖plot(x,sin(x),′r+′); %畫(huà)一正弦波,紅色破折線(xiàn)text(4,0,′注記′);ylabel(′SIN(X)′);388.4MATLAB函數(shù)8.4.1函數(shù)及其調(diào)用方法在MATLAB語(yǔ)言中,M文件有兩種形式:腳本和函數(shù)。腳本沒(méi)有輸入/輸出參數(shù),只是一些函數(shù)和命令的組合。它可以在MATLAB環(huán)境下直接執(zhí)行,也可以訪(fǎng)問(wèn)存在于整個(gè)工作空間內(nèi)的數(shù)據(jù)。由腳本建立的變量在腳本執(zhí)行完后仍將保留在工作空間中可以繼續(xù)對(duì)其進(jìn)行操作,直到使用clear命令對(duì)其清除為止。函數(shù)是MATLAB語(yǔ)言的重要組成部分。MATLAB提供的各種工具箱中的M文件幾乎都是以函數(shù)的形式給出的。函數(shù)接收輸入?yún)?shù),返回輸出參數(shù),且只能訪(fǎng)問(wèn)該函數(shù)本身工作空間中的變量,從命令窗或其他函數(shù)中不能對(duì)其工作空間的變量進(jìn)行訪(fǎng)問(wèn)。8.4MATLAB函數(shù)8.4.1函數(shù)及其調(diào)用方法391.函數(shù)結(jié)構(gòu)MATLAB語(yǔ)言中提供的函數(shù)通常由以下五個(gè)部分組成:(1)函數(shù)定義行;(2)H1行;(3)函數(shù)幫助文件;(4)函數(shù)體;(5)注釋。1.函數(shù)結(jié)構(gòu)40這五個(gè)部分中最重要的是函數(shù)定義行和函數(shù)體。函數(shù)定義行:MATLAB語(yǔ)言在M文件的第一行用關(guān)鍵字“function”把M文件定義為一個(gè)函數(shù),并指定它的名字(必須和文件名相同),同時(shí)也定義了函數(shù)的輸入和輸出參數(shù)。函數(shù)定義行是一個(gè)MATLAB函數(shù)所必需的,其他各部分的內(nèi)容可以沒(méi)有,這種函數(shù)稱(chēng)為空函數(shù)。例如:求最大值函數(shù)“max”的定義行可描述為function[Y,I]=max(x)這五個(gè)部分中最重要的是函數(shù)定義行和函數(shù)體41其中,“max”為函數(shù)名,輸入?yún)?shù)為“x”,輸出參數(shù)為“Y”和“I”。函數(shù)體:函數(shù)體是函數(shù)的主體部分,它包括進(jìn)行運(yùn)算和賦值的所有MATLAB程序代碼。函數(shù)體中可以包括流程控制、輸入/輸出、計(jì)算、賦值、注釋以及函數(shù)調(diào)用和腳本文件調(diào)用等。在函數(shù)體中完成對(duì)輸出參數(shù)的計(jì)算。其中,“max”為函數(shù)名,輸入?yún)?shù)為“x42
2.函數(shù)調(diào)用函數(shù)調(diào)用的過(guò)程實(shí)際上就是參數(shù)傳遞的過(guò)程。例如,在一個(gè)腳本文件里調(diào)用函數(shù)“max”可采用如下方式:n=1:20;a=sin(2*pi*n/20);[Y,I]=max(a);該調(diào)用過(guò)程把變量“a”傳給了函數(shù)中的輸入?yún)?shù)“x”,然后把函數(shù)運(yùn)算的返回值傳給輸出參數(shù)“Y”和“I”。其中,Y是a序列的最大值,I是最大值Y對(duì)應(yīng)的坐標(biāo)值。2.函數(shù)調(diào)用438.4.2常用數(shù)字信號(hào)處理函數(shù)1.信號(hào)產(chǎn)生函數(shù)1)三角波或鋸齒波發(fā)生函數(shù):sawtooth()語(yǔ)法格式:sawtooth(t,width)。產(chǎn)生以2π為周期幅值范圍在[-1,+1]之間的三角波或鋸齒波。參數(shù)t為時(shí)間向量;width是[0,1]之間的數(shù),它決定函數(shù)在一個(gè)周期內(nèi)上升部分和下降部分的比例。width=0.5產(chǎn)生三角波,width=1產(chǎn)生鋸齒波,此時(shí)函數(shù)可簡(jiǎn)寫(xiě)為:sawtooth(t)。8.4.2常用數(shù)字信號(hào)處理函數(shù)44
2)方波發(fā)生函數(shù):square()語(yǔ)法格式:square(t)。產(chǎn)生以2π為周期幅值范圍在[-1,+1]之間的方波,參數(shù)t為時(shí)間向量。3)sinc發(fā)生函數(shù):sinc()語(yǔ)法格式:sinc(t)t≠0t=02)方波發(fā)生函數(shù):square()t≠045例8-6信號(hào)產(chǎn)生舉例clearallt=0:0.0001:0.1;x1=sawtooth(2*pi*50*t);%在[0,0.1]之間產(chǎn)生5個(gè)周期的鋸齒波subplot(221)plot(t,x1)x2=sawtooth(2*pi*50*t,0.5);%在[0,0.1]之間產(chǎn)生5個(gè)周期的三角波subplot(222)plot(t,x2)x3=square(2*pi*50*t);%在[0,2]之間產(chǎn)生10個(gè)周期的方波例8-6信號(hào)產(chǎn)生舉例clearall46subplot(223)plot(t,x3)axis([0,0.1,-1.2,1.2])t=-4:0.1:4;x4=sinc(t); %產(chǎn)生抽樣函數(shù)subplot(224)plot(t,x4)運(yùn)行結(jié)果如圖8-4所示。
subplot(223)47圖8-4常用信號(hào)(a)鋸齒波;(b)三角波;(c)方波;(d)抽樣函數(shù)圖8-4常用信號(hào)482.常用窗的MATLAB函數(shù)表示表8-3常用窗的MATLAB函數(shù)表示窗名稱(chēng)MATLAB函數(shù)窗名稱(chēng)MATLAB函數(shù)矩形窗boxcar(N)哈明窗hamming(N)三角窗triang(N)布萊克曼窗blackman(N)漢寧窗hanning(N)凱塞-貝爾窗kaiser(N,BETA)2.常用窗的MATLAB函數(shù)表示表8-3常用窗的MAT49說(shuō)明:除凱塞-貝爾窗外其他窗函數(shù)的使用方法相同。函數(shù)的參數(shù)N是窗長(zhǎng)度,調(diào)用結(jié)果為一個(gè)列向量。例產(chǎn)生50點(diǎn)的哈明窗可用MATLAB語(yǔ)言表示為:y=hamming(50);plot(y)凱塞-貝爾窗函數(shù)是一組可調(diào)窗函數(shù)。其語(yǔ)法格式為:Kaiser(N,BETA),返回一個(gè)N點(diǎn)的Kaiser窗,參數(shù)BETA是窗函數(shù)表達(dá)式中的參數(shù)β,其含義參照前面的理論部分介紹。說(shuō)明:除凱塞-貝爾窗外其他窗函數(shù)的使用方法相同50
3.濾波器分析與實(shí)現(xiàn)函數(shù)1)取絕對(duì)值:abs()語(yǔ)法格式:abs(x)。當(dāng)x為實(shí)數(shù)時(shí)計(jì)算x的絕對(duì)值;x為復(fù)數(shù)時(shí)得到的是復(fù)數(shù)的模值;x為字符串時(shí)得到各字符的ASCII碼。2)取相角:angle()語(yǔ)法格式:angle(z)。求復(fù)矢量或復(fù)矩陣的相角,結(jié)果為一個(gè)以弧度為單位介于-π和+π之間的值。3.濾波器分析與實(shí)現(xiàn)函數(shù)51
3)求線(xiàn)性卷積:conv()語(yǔ)法格式:conv(x,y)。求矢量x和y的卷積,若x(n)和y(n)的長(zhǎng)度分別為M和N,則返回值是長(zhǎng)度為M+N-1的矢量。例8-7x(n)=[345];y(n)=[2678],求其線(xiàn)性卷積。MATLAB語(yǔ)句如下:x=[345];y=[2678];z=conv(x,y)運(yùn)行結(jié)果:z=
626558267403)求線(xiàn)性卷積:conv()例8-7524)利用指定的數(shù)字濾波器對(duì)數(shù)據(jù)進(jìn)行濾波:filter()常用語(yǔ)法格式:y=filter(b,a,x)。函數(shù)filter利用數(shù)字濾波器對(duì)數(shù)據(jù)進(jìn)行濾波時(shí),采用直接Ⅱ型結(jié)構(gòu)實(shí)現(xiàn),因而適用于IIR和FIR兩種濾波器。參數(shù):a=[a0a1a2…aM],b=[b0
b1
b2…bN]是濾波器系數(shù),x為輸入序列矢量,y為濾波后的輸出。即:濾波器的系統(tǒng)函數(shù)為:標(biāo)準(zhǔn)形式中取a0=1,若輸入濾波系數(shù)a中a0≠1時(shí),MATLAB會(huì)自動(dòng)歸一化系數(shù);若a0=0,系統(tǒng)給出出錯(cuò)信息。4)利用指定的數(shù)字濾波器對(duì)數(shù)據(jù)進(jìn)行濾波:f53
例8-8在語(yǔ)音信號(hào)處理中,常利用周期脈沖信號(hào)通過(guò)AR(10)模型來(lái)近似合成濁音信號(hào)。若信號(hào)周期T=46,AR模型的系數(shù)a=[1,-1.7218,1.2594,-0.6157,0.7754,-0.6496,0.3651,-0.4547,0.3339,0.0975,-0.1851],試合成5個(gè)周期的濁音信號(hào)。用MATLAB語(yǔ)句實(shí)現(xiàn)如下:T=46;a=[1,-1.7218,1.2594,-0.6157,0.7754,-0.6496,0.3651,-0.4547,0.3339,0.0975,-0.1851];fori=0:5x(i*T+1)=1;endy=filter(1,a,x);plot(y)例8-8在語(yǔ)音信號(hào)處理中,常利用周期脈54圖8-5合成濁音波形圖8-5合成濁音波形555)計(jì)算數(shù)字濾波器H(z)的頻率響應(yīng)H(ejω):freqz()語(yǔ)法格式:[H,W]=freqz(B,A,N)得到數(shù)字濾波器的N點(diǎn)的頻率向量W和與之相對(duì)應(yīng)的N點(diǎn)的頻率響應(yīng)向量H,計(jì)算所得的N個(gè)頻率點(diǎn)均勻的分布在[0,π]上。參數(shù)A=[a0
a1
a2…aM],B=[b0
b1
b2…bN]是濾波器系數(shù),即濾波器H(z)形式如下:5)計(jì)算數(shù)字濾波器H(z)的頻率響應(yīng)H(e56參數(shù)N(與上式中階次N的含義不同)最好選用2的整數(shù)次冪,以便使用FFT進(jìn)行快速運(yùn)算,N的缺省值為512。freqz(B,A,N)直接繪制頻率響應(yīng)圖,而不返回任何值。H=freqz(B,A,W)返回W向量中指定的頻率范圍內(nèi)的頻率響應(yīng)。其中,W以弧度為單位在[0,π]范圍內(nèi)。[H,F]=freqz(B,A,N,Fs)對(duì)H(ejω)在[0,Fs/2]上等間隔采樣N點(diǎn),采樣點(diǎn)頻率及相應(yīng)的頻率響應(yīng)值分別記錄在F和H中。參數(shù)N(與上式中階次N的含義不同)最好選用2576)計(jì)算數(shù)字濾波器H(z)的單位脈沖響應(yīng)h(n):impz()語(yǔ)法格式:[H,T]=impz(B,A)。濾波器用傳遞函數(shù)模型限定,參數(shù)B,A分別為H(z)分子分母多項(xiàng)式的系數(shù),函數(shù)返回濾波器的沖擊響應(yīng)列向量H和時(shí)間即采樣間隔列向量T。6)計(jì)算數(shù)字濾波器H(z)的單位脈沖響應(yīng)58
4.變換函數(shù)1)一維快速離散Fourier變換:fft()語(yǔ)法格式:y=fft(x)。y是計(jì)算信號(hào)x的快速離散傅里葉變換。當(dāng)x為矩陣時(shí),計(jì)算x中每一列信號(hào)的離散傅里葉變換。當(dāng)x的長(zhǎng)度為2的冪時(shí),用基2算法;否則,采用較慢的分裂基算法。y=fft(x,n)。計(jì)算n點(diǎn)的FFT。當(dāng)x的長(zhǎng)度大于n時(shí),截?cái)鄕;否則補(bǔ)零。4.變換函數(shù)592)一維快速離散Fourier逆變換:ifft()語(yǔ)法格式:y=ifft(x)。y是計(jì)算信號(hào)x的快速離散傅里葉變換的逆變換。y=ifft(x,n)。計(jì)算n點(diǎn)的快速離散傅里葉變換的逆變換。3)離散余弦變換(DCT):dct()語(yǔ)法格式:y=dct(x)。計(jì)算信號(hào)x的離散余弦變換。y=dct(x,n)。計(jì)算n點(diǎn)的離散余弦變換。當(dāng)x的長(zhǎng)度大于n時(shí),截?cái)鄕;否則補(bǔ)零。離散余弦逆變換可由函數(shù)idct實(shí)現(xiàn)。2)一維快速離散Fourier逆變換:60例8-9計(jì)算信號(hào),n=1,2,…,100的DCT。用MATLAB語(yǔ)言可實(shí)現(xiàn)如下:N=100;n=1:N;x=n+20*sin(2*pi*n/20);y=dct(x);z=idct(y);subplot(311);stem(x,′.′);ylabel(′原始信號(hào)′);subplot(312);stem(y,′.′);ylabel(′DCT信號(hào)′);subplot(313);stem(z,′.′);ylabel(′IDCT信號(hào)′)例8-9計(jì)算信號(hào)61圖8-6信號(hào)的DCT和IDCT變換圖8-6信號(hào)的DCT和IDCT變換628.5MATLAB在信號(hào)處理中的應(yīng)用舉例8.5.1線(xiàn)性卷積與圓周卷積的計(jì)算例8-10已知兩序列:0≤n≤11其他0≤n≤5其他求它們的線(xiàn)性卷積yl(n)=h(n)*x(n)和N點(diǎn)的圓周卷積y(n)=h(n)○N
x(n),并研究?jī)烧咧g的關(guān)系。N8.5MATLAB在信號(hào)處理中的應(yīng)用舉例8.5.1線(xiàn)性63實(shí)現(xiàn)程序:計(jì)算圓周卷積的函數(shù)。functionyc=circonv(x1,x2,N)%直接計(jì)算圓周卷積y=circonv(x1,x2,N)%輸出參數(shù):圓周卷積結(jié)果y%輸入?yún)?shù):需要計(jì)算圓周卷積的序列x1,x2和圓周卷積的點(diǎn)數(shù)Niflength(x1)>Nerror(′N(xiāo)mustnotbelessthanlengthofx1′);endiflength(x2)>Nerror(′N(xiāo)mustnotbelessthanlengthofx2′);end實(shí)現(xiàn)程序:64%以上語(yǔ)句判斷兩個(gè)序列的長(zhǎng)度是否小于Nx1=[x1,zeros(1,N-length(x1))];%填充序列x1(n)使其長(zhǎng)度為N1+N2-1(序列x1(n)的長(zhǎng)度為N1,序列x2(n)的長(zhǎng)度為N2)x2=[x2,zeros(1,N-length(x2))];%填充序列x2(n)使其長(zhǎng)度為N1+N2-1n=[0:1:N-1];x2=x2(mod(-n,N)+1);%生成序列x2((-n))NH=zeros(N,N);forn=1:1:NH(n,:)=cirshiftd(x2,n-1,N);%該矩陣的k行為x2((k-1-n))Nendyc=x1*H′;%計(jì)算循環(huán)卷積%以上語(yǔ)句判斷兩個(gè)序列的長(zhǎng)度是否小于N65functiony=cirshiftd(x,m,N)%directlyrealizecircularshiftforsequencex%y=cirshiftd(x,m,N);%x:inputsequencewhoselengthislessthanN%m:howmuchtoshift%N:circularlength%y:outputshiftedsequenceiflength(x)>Nerror(′thelengthofxmustbelessthanN′);endx=[x,zeros(1,N-length(x))];n=[0:1:N-1];y=x(mod(n-m,N)+1);functiony=cirshiftd(x,m,N)66(2)研究?jī)烧咧g的關(guān)系。clearall;n=[0:1:11];m=[0:1:5];N1=length(n);N2=length(m);xn=0.8.^n; %生成x(n)hn=ones(1,N2);%生成h(n)yln=conv(xn,hn);%直接用函數(shù)conv計(jì)算線(xiàn)性卷積(2)研究?jī)烧咧g的關(guān)系。67ycn=circonv(xn,hn,N1);%用函數(shù)circonv計(jì)算N1點(diǎn)圓周卷積ny1=[0:1:length(yln)-1];ny2=[0:1:length(ycn)-1];subplot(2,1,1); %畫(huà)圖stem(ny1,yln);ylabel(′線(xiàn)性卷積′)subplot(2,1,2);stem(ny2,ycn);ylabel(′圓周卷積′)axis([0,16,0,4]);ycn=circonv(xn,hn,N1);68圖8-7線(xiàn)性卷積和圓周卷積的比較圖8-7線(xiàn)性卷積和圓周卷積的比較698.5.2利用離散傅里葉變換(DFT)分析信號(hào)的頻譜例8-11已知序列x(n)=2sin(0.48πn)+cos(0.52πn)0≤n<100,試?yán)L制x(n)及它的離散傅里葉變換|X(k)|圖。MATLAB實(shí)現(xiàn)程序:clearallN=100;n=0:N-1;xn=2*sin(0.48*pi*n)+cos(0.52*pi*n);XK=fft(xn,N);magXK=abs(XK);phaXK=angle(XK);subplot(1,2,1)8.5.2利用離散傅里葉變換(DFT)分析信號(hào)的頻譜70plot(n,xn)xlabel(′n′);ylabel(′x(n)′);title(′x(n)N=100′);subplot(1,2,2)k=0:length(magXK)-1;stem(k,magXK,′.′);xlabel(′k′);ylabel(′|X(k)|′);title(′X(k)N=100′);plot(n,xn)71圖8-8信號(hào)及其離散傅里葉變換圖8-8信號(hào)及其離散傅里葉變換728.5.3利用FFT實(shí)現(xiàn)線(xiàn)性卷積若序列x1(n)、x2(n)為長(zhǎng)度分別為N1、N2的有限長(zhǎng)序列,yc(n)=x1(n)○x2(n),yl(n)=x1(n)*x2(n)。由DFT的性質(zhì)可知:當(dāng)N≥N1+N2-1時(shí)有yl(n)=yc(n)=IDFT{DFT[x1(n)]·DFT[x2(n)]}。序列較長(zhǎng)時(shí)DFT運(yùn)算通常用快速算法FFT實(shí)現(xiàn)。在MATLAB的信號(hào)處理工具箱中函數(shù)FFT和IFFT用于快速傅里葉變換和逆變換。8.5.3利用FFT實(shí)現(xiàn)線(xiàn)性卷積73例8-12用FFT實(shí)現(xiàn)例8-10中兩序列的線(xiàn)性卷積。實(shí)現(xiàn)程序:n=[0:1:11];m=[0:1:5];N1=length(n);N2=length(m);xn=0.8.^n; %生成x(n)hn=ones(1,N2);%生成h(n)N=N1+N2-1;XK=fft(xn,N);例8-12用FFT實(shí)現(xiàn)例8-10中兩74HK=fft(hn,N);YK=XK.*HK;yn=ifft(YK,N);ifall(imag(xn)==0)&(all(imag(hn)==0))%實(shí)序列的循環(huán)卷積仍然為實(shí)序列yn=real(yn);endx=0:N-1;stem(x,yn,′.′)HK=fft(hn,N);75圖8-9利用FFT實(shí)現(xiàn)線(xiàn)性卷積圖8-9利用FFT實(shí)現(xiàn)線(xiàn)性卷積768.5.4FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)FIR濾波器的設(shè)計(jì)方法有窗函數(shù)法和頻率采樣法兩種,在MATLAB的數(shù)字信號(hào)處理工具箱中提供了函數(shù)fir1。fir1是采用經(jīng)典窗函數(shù)法設(shè)計(jì)線(xiàn)性相位FIR數(shù)字濾波器,且具有標(biāo)準(zhǔn)低通、帶通、高通和帶阻等類(lèi)型。語(yǔ)法格式:B=fir1(n,Wn)B=fir1(n,Wn,′ftype′)B=fir1(n,Wn,window)B=fir1(n,Wn,′ftype′,window)8.5.4FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)77其中,n為FIR濾波器的階數(shù),對(duì)于高通、帶阻濾波器n取偶數(shù)。Wn為濾波器截止頻率,取值范圍0~1。對(duì)于帶通、帶阻濾波器,Wn=[W1,W2],且W1<W2?!鋐type′為濾波器類(lèi)型。缺省時(shí)為低通或帶通濾波器,為′high′時(shí)是高通濾波器,為′stop′時(shí)是帶阻濾波器。window為窗函數(shù),列向量,其長(zhǎng)度為n+1;缺省時(shí),自動(dòng)取hamming窗。輸出參數(shù)B為FIR濾波器系數(shù)向量,長(zhǎng)度為n+1。其中,n為FIR濾波器的階數(shù),對(duì)于高通、帶阻78
例8-13用窗函數(shù)法設(shè)計(jì)一個(gè)線(xiàn)性相位FIR低通濾波器,性能指標(biāo):通帶截止頻率Wp=0.2π,阻帶截止頻率Ws=0.3π,阻帶衰減不小于40dB,通帶衰減不大于3dB。實(shí)現(xiàn)程序:wp=0.2*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(8*pi/wdelta);Wn=(0.2+0.3)*pi/2;b=fir1(N,Wn/pi,hanning(N+1));freqz(b,1,512)例8-13用窗函數(shù)法設(shè)計(jì)一個(gè)線(xiàn)性相位FI79圖8-10FIR濾波器的幅頻和相頻特性圖圖8-10FIR濾波器的幅頻和相頻特性圖808.5.5IIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)基于模擬濾波器變換原理IIR濾波器的經(jīng)典設(shè)計(jì):首先,根據(jù)模擬濾波器的指標(biāo)設(shè)計(jì)出相應(yīng)的模擬濾波器;然后,將設(shè)計(jì)好的模擬濾波器轉(zhuǎn)換成滿(mǎn)足給定技術(shù)指標(biāo)的數(shù)字濾波器。常用算法有脈沖響應(yīng)不變法和雙線(xiàn)性變換法。在MATLAB的數(shù)字信號(hào)處理工具箱中,提供了相應(yīng)的設(shè)計(jì)函數(shù)。常用的有:8.5.5IIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)81
1.Butterworth濾波器階數(shù)選擇函數(shù)[N,Wn]=buttord(Wp,Ws,Rp,Rs)輸入?yún)?shù):Wp通帶截止頻率,Ws阻帶截止頻率,Rp通帶最大衰減,Rs阻帶最小衰減;輸出參數(shù):N符合要求的濾波器最小階數(shù),Wn為Butterworth濾波器固有頻率(3dB)。1.Butterworth濾波器階數(shù)選擇函82
2.零極點(diǎn)增益模型到傳遞函數(shù)模型的轉(zhuǎn)換[num,den]=zp2tf(Z,P,K);輸入?yún)?shù):Z,P,K分別表示零極點(diǎn)增益模型的零點(diǎn)、極點(diǎn)和增益;輸出參數(shù):num,den分別為傳遞函數(shù)分子和分母的多項(xiàng)式系數(shù)。
3.從低通向低通的轉(zhuǎn)換[b,a]=lp2lp(Bap,Aap,Wn);功能:把模擬濾波器原型轉(zhuǎn)換成截至頻率為Wn的低通濾波器。2.零極點(diǎn)增益模型到傳遞函數(shù)模型的轉(zhuǎn)換83
4.雙線(xiàn)性變換函數(shù)[bz,az]=bilinear(b,a,Fs);功能:把模擬濾波器的零極點(diǎn)模型轉(zhuǎn)換為數(shù)字濾波器的零極點(diǎn)模型。其中,F(xiàn)s是采樣頻率。4.雙線(xiàn)性變換函數(shù)84
例8-14用雙線(xiàn)性變換法設(shè)計(jì)一個(gè)Butterworth低通濾波器,要求其通帶截止頻率100Hz,阻帶截止頻率200Hz,通帶衰減Rp小于2dB,阻帶衰減大于15dB,采樣頻率Fs=500Hz。MATLAB實(shí)現(xiàn)程序:%求模擬濾波器參數(shù)wp=100*2*pi;ws=200*2*pi;Rp=2;Rs=15;Fs=500;Ts=1/Fs;%選擇濾波器的最小階數(shù)例8-14用雙線(xiàn)性變換法設(shè)計(jì)一個(gè)Butt85[N,Wn]=buttord(wp,ws,Rp,Rs,′s′);%創(chuàng)建butterworth模擬濾波器[Z,P,K]=buttap(N);%把濾波器零極點(diǎn)模型轉(zhuǎn)化為傳遞函數(shù)模型[Bap,Aap]=zp2tf(Z,P,K);%把模擬濾波器原型轉(zhuǎn)換成截至頻率為Wn的低通濾波器[b,a]=lp2lp(Bap,Aap,Wn);%用雙線(xiàn)性變換法實(shí)現(xiàn)模擬濾波器到數(shù)字濾波器的轉(zhuǎn)換[bz,az]=bilinear(b,a,Fs);%繪制頻率響應(yīng)曲線(xiàn)[H,W]=freqz(bz,az);plot(W*Fs/(2*pi),abs(H));gridxlabel(′頻率/Hz′)ylabel(′頻率響應(yīng)幅度′)[N,Wn]=buttord(wp,ws,Rp,Rs,′s′86圖8-11Butterworth低通濾波器的頻率響應(yīng)圖8-11Butterworth低通濾波器的頻率響應(yīng)87第8章MATLAB程序設(shè)計(jì)語(yǔ)言在信號(hào)處理中的應(yīng)用8.1概述8.2基本數(shù)值運(yùn)算8.3基本語(yǔ)句8.4MATLAB函數(shù)8.5MATLAB在信號(hào)處理中的應(yīng)用舉例第8章MATLAB程序設(shè)計(jì)語(yǔ)言8.1概述888.1概述8.1.1MATLAB程序設(shè)計(jì)語(yǔ)言簡(jiǎn)介MATLAB,MatrixLaboratory的縮寫(xiě),是由Mathworks公司開(kāi)發(fā)的一套用于科學(xué)工程計(jì)算的可視化高性能語(yǔ)言,具有強(qiáng)大的矩陣運(yùn)算能力。與大家常用的Fortran和C等高級(jí)語(yǔ)言相比,MATLAB的語(yǔ)法規(guī)則更簡(jiǎn)單,更貼近人的思維方式,被稱(chēng)之為“草稿紙式的語(yǔ)言”。截至目前,MATLAB已經(jīng)發(fā)展到12.1版,適用于所有32位的Windows操作系統(tǒng),按NTFS(NT文件系統(tǒng))格式下完全安裝約需850MB。MATLAB軟件主要由主包、仿真系統(tǒng)和工具箱三大部分組成。8.1概述8.1.1MATLAB程序設(shè)計(jì)語(yǔ)言簡(jiǎn)介898.1.2MATLAB應(yīng)用入門(mén)1.MATLAB的安裝與卸載MATLAB軟件在用戶(hù)接口設(shè)計(jì)上具有較強(qiáng)的親和力,其安裝過(guò)程比較典型,直接運(yùn)行光盤(pán)中的安裝向?qū)е纬绦騍ETUP.exe,按其提示一步步選擇即可。MATLAB自身帶有卸載程序,在其安裝目錄下有uninstall子目錄,運(yùn)行該目錄下的uninstall.exe即可;也可以通過(guò)Windows系統(tǒng)的安裝卸載程序進(jìn)行卸載。8.1.2MATLAB應(yīng)用入門(mén)902.MATLAB的啟動(dòng)與退出MATLAB安裝完成后,會(huì)自動(dòng)在Windows桌面上生成一個(gè)快捷方式,它是指向安裝目錄下\bin\win32\matlab.exe的鏈接,雙擊它即可來(lái)到MATLAB集成環(huán)境的基本窗口,通常稱(chēng)之為命令窗口。MATLAB的退出與普通WIN32的程序一樣,值得一提的是它有一個(gè)自身專(zhuān)有的快捷鍵Ctrl+Q。2.MATLAB的啟動(dòng)與退出913.MATLAB界面簡(jiǎn)介圖8-1MATLAB基本界面——命令窗口3.MATLAB界面簡(jiǎn)介圖8-1MATLAB基本界面921)菜單欄菜單欄中包括File、Edit、View、Web、Window和Help六個(gè)菜單項(xiàng)。這里著重介紹File項(xiàng)。File項(xiàng)是數(shù)據(jù)輸入/輸出的接口,包括10個(gè)子項(xiàng),這里重點(diǎn)介紹其中的5個(gè)子項(xiàng):New:新建文件項(xiàng)。有四個(gè)選擇:MFile(.M,文本格式的MATLAB程序文件,可以直接通過(guò)文件名的方式在MATLAB環(huán)境下解釋運(yùn)行);Figure(圖形);Model(仿真模型文件)和GUI(可視化界面文件)。1)菜單欄93Open:打開(kāi)所有MATLAB支持的文件格式,系統(tǒng)將自動(dòng)識(shí)別并采用相應(yīng)的程序?qū)ξ募M(jìn)行處理。例如,打開(kāi)一個(gè).m文件,系統(tǒng)將自動(dòng)打開(kāi)M文件編輯器對(duì)它進(jìn)行編輯。ImportData...:導(dǎo)入用于MATLAB處理的數(shù)據(jù)函數(shù),包括各種圖像文件、聲音文件和.mat文件。SaveWorkspaceAs...:將工作空間的變量以.mat(二進(jìn)制)或ASCII文本的形式存入文件。SetPath...:設(shè)置工作路徑。可以打開(kāi)路徑設(shè)置(SetPath)對(duì)話(huà)框(圖8-2),將用戶(hù)自己建立的目錄加入MATLAB的目錄系統(tǒng)中,以便所編制的文件能夠在MATLAB環(huán)境中直接調(diào)用。Open:打開(kāi)所有MATLAB支持的文件94圖8-2路徑設(shè)置對(duì)話(huà)框圖8-2路徑設(shè)置對(duì)話(huà)框95單擊AddFolder...按鈕可以將你的一個(gè)文件夾加入到系統(tǒng)路徑中;AddwithSubfolders...允許把一個(gè)文件夾包括其所有的子文件夾加入到系統(tǒng)路徑中。這兩種操作均可以直觀地在右側(cè)的路徑欄內(nèi)看到結(jié)果。選中一個(gè)加入的文件夾,你可以利用MovetoTop(移至所有路徑的最前面),MoveUp(上移一個(gè)),MoveDown(下移一個(gè)),MovetoBottom(移至所有路徑的最后面)等四個(gè)按鈕將改變文件在系統(tǒng)路徑中的排列位置以利于對(duì)文件的搜索使用,也可以利用Remove按鈕將其刪除。對(duì)路徑操作完畢后,按Save按鈕予以保存;按Close按鈕關(guān)閉本對(duì)話(huà)框;按Revert按鈕取消所有未保存的改動(dòng);按Default按鈕將還原到MATLAB安裝時(shí)的路徑設(shè)置;按Help按鈕則啟動(dòng)幫助系統(tǒng)解答疑難。單擊AddFolder...按鈕可以將962)命令行區(qū)對(duì)輸入命令的解釋MATLAB按以下順序進(jìn)行:①檢查它是否是工作空間中的變量,是則顯示變量?jī)?nèi)容。②檢查它是否是嵌入函數(shù),是則運(yùn)行之。③檢查它是否是子函數(shù)。④檢查它是否是私有函數(shù)。⑤檢查它是否是位于MATLAB搜索路徑范圍內(nèi)的函數(shù)文件或腳本文件。請(qǐng)注意,如果有兩個(gè)以上的方案與輸入的命令相匹配,MATLAB將只執(zhí)行第一個(gè)匹配。2)命令行區(qū)974.MATLAB常用命令表8-1MATLAB常用命令4.MATLAB常用命令表8-1MATLAB常用命令98數(shù)字信號(hào)處理課件(第9章MATELAB的實(shí)現(xiàn))998.2基本數(shù)值運(yùn)算8.2.1MATLAB內(nèi)部特殊變量和常數(shù)MATLAB內(nèi)部有很多變量和常數(shù),用以表達(dá)特殊含義。常用的有:(1)變量ans:指示當(dāng)前未定義變量名的答案。(2)常數(shù)eps:表示浮點(diǎn)相對(duì)精度,其值是從1.0到下一個(gè)最大浮點(diǎn)數(shù)之間的差值。該變量值作為一些MATLAB函數(shù)計(jì)算的相對(duì)浮點(diǎn)精度,按IEEE標(biāo)準(zhǔn),eps=2-52,近似為2.2204e-016。8.2基本數(shù)值運(yùn)算8.2.1MATLAB內(nèi)部特殊變量和100(3)常數(shù)Inf:表示無(wú)窮大。當(dāng)輸入或計(jì)算中有除以0時(shí)產(chǎn)生Inf。(4)虛數(shù)單位i,j:表示復(fù)數(shù)虛部單位,相當(dāng)于 。(5)NaN:表示不定型值,是由0/0運(yùn)算產(chǎn)生的。(6)常數(shù)pi:表示圓周率π,其值為3.1415926535897…。(3)常數(shù)Inf:表示無(wú)窮大。當(dāng)輸入1018.2.2變量類(lèi)型1.變量命名規(guī)則MATLAB中對(duì)變量的命名應(yīng)遵循以下規(guī)則:(1)變量名可以由字母、數(shù)字和下劃線(xiàn)混合組成,但必須以字母開(kāi)頭。(2)字符長(zhǎng)度不能大于31。(3)變量命名區(qū)分大小寫(xiě)。8.2.2變量類(lèi)型102
2.局部變量和全局變量局部變量是指那些每個(gè)函數(shù)體內(nèi)自己定義的,不能從其他函數(shù)和MATLAB工作空間訪(fǎng)問(wèn)的變量。全局變量是指用關(guān)鍵字“global”聲明的變量。全局變量名應(yīng)盡量大寫(xiě),并能反映它本身的含義。如果需要在工作空間和幾個(gè)函數(shù)中都能訪(fǎng)問(wèn)一個(gè)全局變量,必須在工作空間和這幾個(gè)函數(shù)中都聲明該變量是全局的。2.局部變量和全局變量1038.2.3矩陣及其運(yùn)算MATLAB具有強(qiáng)大的矩陣運(yùn)算和數(shù)據(jù)處理功能,對(duì)矩陣的處理必須遵從代數(shù)規(guī)則。
1.矩陣生成
1)一般矩陣的生成對(duì)于一般的矩陣MATLAB的生成方法有多種。最簡(jiǎn)單的方法是從鍵盤(pán)直接輸入矩陣元素。直接輸入矩陣元素時(shí)應(yīng)注意:各元素之間用空格或逗號(hào)隔開(kāi),用分號(hào)或回車(chē)結(jié)束矩陣行,用中括號(hào)把矩陣所有元素括起來(lái)。8.2.3矩陣及其運(yùn)算104
例8-1在工作空間產(chǎn)生一個(gè)3×3矩陣A可用MATLAB語(yǔ)言描述如下:A=[123;456;789]或A=[123 456 789]運(yùn)行結(jié)果: A= 123 456 789例8-1在工作空間產(chǎn)生一個(gè)3×3矩陣A可用1052)特殊矩陣的生成對(duì)于特殊的矩陣可直接調(diào)用MATLAB的函數(shù)生成。用函數(shù)zeros生成全0矩陣:格式B=zeros(m,n)生成m×n的全0陣。用函數(shù)ones生成全1矩陣:格式B=ones(m,n)生成m×n的全1陣。用函數(shù)eye生成單位陣:格式B=eye(m,n)生成m×n矩陣,其中對(duì)角線(xiàn)元素全為1,其他元素為0。2)特殊矩陣的生成106
2.矩陣的運(yùn)算矩陣的運(yùn)算有基本運(yùn)算和函數(shù)運(yùn)算兩種類(lèi)型?;具\(yùn)算包括矩陣的加、減、乘、除、乘方、求轉(zhuǎn)置、求逆等,其主要特點(diǎn)是通過(guò)MATLAB提供的基本運(yùn)算符+、-、*、/(\)、^等即可完成。函數(shù)運(yùn)算主要是通過(guò)調(diào)用MATLAB系統(tǒng)內(nèi)置的運(yùn)算函數(shù)來(lái)求取矩陣的行列式(det(A)),求秩(rank(A)),求特征值和特征向量([V,D]=eig(A)),求Jordan標(biāo)準(zhǔn)形(jordan(A))和矩陣分解等。需要用時(shí)可以參閱聯(lián)機(jī)幫助和相關(guān)參考書(shū)。2.矩陣的運(yùn)算107例8-2矩陣的基本運(yùn)算。 A=[1,2,3;4,5,6]; B=[6,5,4;3,2,1]; C=A+B%計(jì)算兩個(gè)矩陣的和 D=B′%計(jì)算矩陣B的轉(zhuǎn)置 E=A*D%做矩陣乘法,必須要滿(mǎn)足矩陣乘法的基本要求
%E應(yīng)該是2階方陣F=det(E)%求E的行列式值G=E^(-1)%求E的逆例8-2矩陣的基本運(yùn)算。108輸出結(jié)果:C= 777 777D= 63 52 41E= 2810 7328F=54G= 0.5185-0.1852 -1.35190.5185輸出結(jié)果:1098.3基本語(yǔ)句8.3.1程序控制語(yǔ)句
1.循環(huán)語(yǔ)句MATLAB的循環(huán)語(yǔ)句包括for循環(huán)和while循環(huán)兩種類(lèi)型。1)for循環(huán)語(yǔ)法格式:for循環(huán)變量=起始值:步長(zhǎng):終止值循環(huán)體end8.3基本語(yǔ)句8.3.1程序控制語(yǔ)句110起始值和終止值為一整形數(shù),步長(zhǎng)可以為整數(shù)或小數(shù),省略步長(zhǎng)時(shí),默認(rèn)步長(zhǎng)為1。執(zhí)行for循環(huán)時(shí),判定循環(huán)變量的值是否大于(步長(zhǎng)為負(fù)時(shí)則判定是否小于)終止值,不大于(步長(zhǎng)為負(fù)時(shí)則小于)則執(zhí)行循環(huán)體,執(zhí)行完畢后加上步長(zhǎng),大于(步長(zhǎng)為負(fù)時(shí)則小于)終止值后退出循環(huán)。起始值和終止值為一整形數(shù),步長(zhǎng)可以為整數(shù)或111例8-3給矩陣A、B賦值。MATLAB語(yǔ)句及運(yùn)行結(jié)果如下:k=5;a=zeros(k,k)%矩陣賦零初值form=1∶kforn=1∶ka(m,n)=1/(m+n-1);endendfori=m∶-1∶1b(i)=i;end例8-3給矩陣A、B賦值。112運(yùn)行結(jié)果:a=1.00000.50000.33330.25000.20000.50000.33330.25000.20000.16670.33330.25000.20000.16670.14290.25000.20000.16670.14290.12500.20000.16670.14290.12500.1111b=12345運(yùn)行結(jié)果:1132)while循環(huán)語(yǔ)法格式:while表達(dá)式循環(huán)體end其執(zhí)行方式為:若表達(dá)式為真(運(yùn)算值非0),則執(zhí)行循環(huán)體;若表達(dá)式為假(運(yùn)算結(jié)果為0),則退出循環(huán)體,執(zhí)行end后的語(yǔ)句。2)while循環(huán)114例8-4a=3;whileaa=a-1end輸出:a=2a=1a=0例8-4a=3;1152.條件轉(zhuǎn)移語(yǔ)句條件轉(zhuǎn)移語(yǔ)句有if和switch兩種。1)if語(yǔ)句MATLAB中if語(yǔ)句的用法與其他高級(jí)語(yǔ)言相類(lèi)似,其基本語(yǔ)法格式有以下幾種:格式一:if邏輯表達(dá)式執(zhí)行語(yǔ)句end2.條件轉(zhuǎn)移語(yǔ)句116格式二:if邏輯表達(dá)式執(zhí)行語(yǔ)句1 else執(zhí)行語(yǔ)句2end格式三:if邏輯表達(dá)式1執(zhí)行語(yǔ)句1elseif邏輯表達(dá)式2執(zhí)行語(yǔ)句2end格式二:if邏輯表達(dá)式1172)switch語(yǔ)句switch語(yǔ)句的用法與其他高級(jí)語(yǔ)言相類(lèi)似,其基本語(yǔ)法格式為:switch表達(dá)式(標(biāo)量或字符串)case值1語(yǔ)句1case值2語(yǔ)句2…otherwise語(yǔ)句nend2)switch語(yǔ)句1188.3.2繪圖語(yǔ)句常用的MATLAB繪圖語(yǔ)句有figure、plot、subplot、stem等,圖形修飾語(yǔ)句有title、axis、text等。
1.figurefigure有兩種用法,只用一句figure命令,會(huì)創(chuàng)建一個(gè)新的圖形窗口,并返回一個(gè)整數(shù)型的窗口編號(hào)。figure(n)表示將第n號(hào)圖形窗口作為當(dāng)前的圖形窗口,并將其顯示在所有窗口的最前面;如果該圖形窗口不存在,則新建一個(gè)窗口,并賦以編號(hào)n。8.3.2繪圖語(yǔ)句119
2.plot線(xiàn)型繪圖函數(shù)。用法為plot(x,y,′s′)。參數(shù)x為橫軸變量,y為縱軸變量,s用以控制圖形的基本特征如顏色、粗細(xì)等,通??梢允÷?,常用方法如表8-2所示。表8-2常用繪圖參數(shù)的含義2.plot表8-2常用繪圖參數(shù)的含義120
3.Stem繪制離散序列圖,常用格式stem(y)和stem(x,y)分別和相應(yīng)的plot函數(shù)的繪圖規(guī)則相同,只是用stem命令繪制的是離散序列圖。
4.subplotsubplot(m,n,i)圖形顯示時(shí)分割窗口命令,把一個(gè)圖形窗口分為m行,n列,m×n個(gè)小窗口,并指定第i個(gè)小窗口為當(dāng)前窗口。3.Stem121
5.繪圖修飾命令在繪制圖形時(shí),我們通常需要為圖形添加各種注記以增加可讀性。在plot語(yǔ)句后使用title(′標(biāo)題′)可以在圖形上方添加標(biāo)題,使用xlabel(′標(biāo)記′)或ylabel(′標(biāo)記′)為X軸或Y軸添加說(shuō)明,使用text(X值、Y值、′想加的標(biāo)示′)可以在圖形中任意位置添加標(biāo)示。5.繪圖修飾命令122例8-5畫(huà)圖基本語(yǔ)句如圖8-3所示。圖8-3例8-5中繪制的幾種正弦波形例8-5畫(huà)圖基本語(yǔ)句如圖8-3所示。圖8-123MATLAB語(yǔ)句及運(yùn)行結(jié)果如下:x=0:0.1*pi:2*pi; %定義x向量figure(1); %創(chuàng)建一個(gè)新的圖形窗口,編號(hào)為1subplot(2,2,1); %將窗口劃分為2行,2列,在第1個(gè)窗口中作圖plot(x,sin(x)); %畫(huà)圖title(′正弦線(xiàn)′);%給圖形加標(biāo)題
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《營(yíng)業(yè)稅課件》課件
- 《統(tǒng)計(jì)調(diào)查技能模塊》課件
- 《認(rèn)識(shí)寶島臺(tái)灣》課件
- 《王老吉的市場(chǎng)營(yíng)銷(xiāo)》課件
- 《網(wǎng)頁(yè)設(shè)計(jì)與鑒賞》課件
- 2025年中考語(yǔ)文文言文總復(fù)習(xí)-教師版-專(zhuān)題01:文言文閱讀之理解實(shí)詞含義(講義)
- 鞋業(yè)生產(chǎn)線(xiàn)采購(gòu)招標(biāo)合同三篇
- 教育機(jī)構(gòu)話(huà)務(wù)員工作總結(jié)
- 藥品醫(yī)療器械銷(xiāo)售心得分享
- 兒童感染科護(hù)理工作總結(jié)
- 理解詞語(yǔ)句子的方法PPT
- 作文開(kāi)頭與結(jié)尾PPT課件ppt(共42張PPT)
- 重癥醫(yī)學(xué)科運(yùn)用PDCA循環(huán)提高消毒棉簽開(kāi)啟時(shí)間標(biāo)注的執(zhí)行率品管圈成果匯報(bào)
- 云南面向東南亞、南亞區(qū)域物流系統(tǒng)優(yōu)化研究的開(kāi)題報(bào)告
- 高效課堂教學(xué)流程和課堂常規(guī)公開(kāi)課一等獎(jiǎng)市賽課獲獎(jiǎng)?wù)n件
- 《新媒體營(yíng)銷(xiāo)與策劃》考試復(fù)習(xí)題庫(kù)(含答案)
- 浙江寧波廣播電視集團(tuán)發(fā)射中心招考聘用筆試參考題庫(kù)答案解析
- 2024年航天知識(shí)總結(jié)
- 公立醫(yī)院章程范本(中國(guó)醫(yī)院協(xié)會(huì)2019版)
- 江蘇小高考(物理化學(xué)生物)真題及答案
- 垃圾開(kāi)挖清運(yùn)方案
評(píng)論
0/150
提交評(píng)論