《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第2章_第1頁(yè)
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第2章_第2頁(yè)
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第2章_第3頁(yè)
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第2章_第4頁(yè)
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第2章_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章MATLAB簡(jiǎn)介2.1MATLAB概述2.2MATLAB的幫助文件2.3MATLAB7.0的新增功能2.1MATLAB概述

2.1.1MATLAB的特點(diǎn)

MATLAB是MathWorks公司開(kāi)發(fā)的一種跨平臺(tái)的、用于矩陣數(shù)值計(jì)算的簡(jiǎn)單高效的數(shù)學(xué)語(yǔ)言。與其它計(jì)算機(jī)高級(jí)語(yǔ)言如C、C++、FORTRAN、BASIC、Pascal等相比,MATLAB語(yǔ)言編程要簡(jiǎn)潔得多,編程語(yǔ)句更加接近數(shù)學(xué)描述,可讀性好,其強(qiáng)大的圖形功能和可視化數(shù)據(jù)處理能力也是其它高級(jí)語(yǔ)言望塵莫及的。對(duì)于具有任何一門高級(jí)語(yǔ)言基礎(chǔ)的讀者來(lái)說(shuō),學(xué)習(xí)MATLAB十分容易。但是,要用好MATLAB卻不是在短時(shí)間內(nèi)就可以達(dá)到的。這并不是因?yàn)镸ATLAB語(yǔ)言復(fù)雜難懂,而是實(shí)際問(wèn)題的求解往往需要使用者具備更多的數(shù)學(xué)知識(shí)和專業(yè)知識(shí)。MATLAB使得人們擺脫了常規(guī)計(jì)算機(jī)編程的繁瑣,讓人們能夠?qū)⒋蟛糠志ν度氲窖芯繂?wèn)題的數(shù)學(xué)建模上??梢哉f(shuō),應(yīng)用MATLAB這一數(shù)學(xué)計(jì)算和系統(tǒng)仿真的強(qiáng)大工具,可以使科學(xué)研究的效率得以成百倍的提高。目前,MATLAB已經(jīng)廣泛用于理工科大學(xué)從高等數(shù)學(xué)到幾乎各門專業(yè)課程之中,成為這些課程進(jìn)行虛擬實(shí)驗(yàn)的有效工具。在科研部門,MATLAB更是極為廣泛地得到應(yīng)用,成為全球科學(xué)家和工程師進(jìn)行學(xué)術(shù)交流時(shí)首選的共同語(yǔ)言。在國(guó)內(nèi)外許多著名學(xué)術(shù)期刊上登載的論文,大部分的數(shù)值結(jié)果和圖形都是借助MATLAB來(lái)完成的。與其它高級(jí)語(yǔ)言相比較,MATLAB具有以下獨(dú)特的優(yōu)勢(shì):

(1)MATLAB是一種跨平臺(tái)的數(shù)學(xué)語(yǔ)言。采用MATLAB編寫的程序可以在目前所有的操作系統(tǒng)上運(yùn)行(只要這些系統(tǒng)上安裝了MATLAB平臺(tái))。MATLAB程序不依賴于計(jì)算機(jī)類型和操作系統(tǒng)類型。

(2)MATLAB是一種超高級(jí)語(yǔ)言。MATLAB平臺(tái)本身是用C語(yǔ)言寫成的,其中匯集了當(dāng)前最新的數(shù)學(xué)算法庫(kù),是許多專業(yè)數(shù)學(xué)家和工程學(xué)者多年的勞動(dòng)結(jié)晶。使用MATLAB意味著站在巨人的肩膀上觀察和處理問(wèn)題,所以在編程效率及程序的可讀性、可靠性和可移植性上遠(yuǎn)遠(yuǎn)超過(guò)了常規(guī)的高級(jí)語(yǔ)言。這使得MATLAB成為了進(jìn)行科學(xué)研究和數(shù)值計(jì)算的首選語(yǔ)言。

(3)MATLAB語(yǔ)法簡(jiǎn)單,編程風(fēng)格接近數(shù)學(xué)語(yǔ)言描述,是數(shù)學(xué)算法開(kāi)發(fā)和驗(yàn)證的最佳工具。MATLAB以復(fù)數(shù)矩陣運(yùn)算為基礎(chǔ),其基本編程單位是矩陣,使得編程簡(jiǎn)單而功能極為強(qiáng)大。對(duì)于常規(guī)語(yǔ)言中必須使用許多語(yǔ)句才能實(shí)現(xiàn)的功能,如矩陣分解、矩陣求逆、積分、快速傅立葉變換,甚至串口操作、聲音的輸入/輸出等,在MATLAB中均用一兩句指令即可實(shí)現(xiàn)。而且,MATLAB中的數(shù)值算法是經(jīng)過(guò)千錘百煉的,比用戶自己編程實(shí)現(xiàn)的算法的可信度和可靠性都大為提高。

(4)MATLAB計(jì)算精度很高。MATLAB中數(shù)據(jù)是以雙精度存儲(chǔ)的,一個(gè)實(shí)數(shù)采用8字節(jié)存儲(chǔ),而一個(gè)復(fù)數(shù)則采用16字節(jié)存儲(chǔ)。通常矩陣運(yùn)算精度高達(dá)1015以上,完全能夠滿足一般工程和科學(xué)計(jì)算的需要。與其它語(yǔ)言相比,MATLAB對(duì)計(jì)算機(jī)內(nèi)存、硬盤空間的要求也是比較高的。

(5)MATLAB具有強(qiáng)大的繪圖功能。利用MATLAB的繪圖功能,可以輕易地獲得高質(zhì)量的曲線圖;具有多種形式來(lái)表達(dá)二維、三維圖形,并具有強(qiáng)大的動(dòng)畫功能,可以非常直觀地表現(xiàn)抽象的數(shù)值結(jié)果。這也是MATLAB廣為流行的重要原因之一。

(6)MATLAB具有串口操作、聲音輸入/輸出等硬件操控能力。隨著版本的提高,這種能力還會(huì)不斷加強(qiáng),使得人們利用計(jì)算機(jī)和實(shí)際硬件相連接的半實(shí)物仿真的夢(mèng)想得以輕易實(shí)現(xiàn)。

(7)MATLAB程序可以直接映射為DSP芯片可接受的代碼,大大提高了現(xiàn)代電子通信設(shè)備的研發(fā)效率。

(8)MATLAB的程序執(zhí)行效率比其它語(yǔ)言低。MATLAB程序通常是解釋執(zhí)行的,在執(zhí)行效率和速度上低于其它高級(jí)語(yǔ)言。當(dāng)然,如果對(duì)執(zhí)行效率有特別要求,則可以采用C語(yǔ)言編制算法,然后通過(guò)MATLAB接口在MATLAB中執(zhí)行。事實(shí)上,MATLAB自帶的許多內(nèi)部函數(shù)均是用C語(yǔ)言編寫并編譯的,因此利用MATLAB內(nèi)部函數(shù)的程序部分運(yùn)行速度并不比其它語(yǔ)言中相應(yīng)函數(shù)低。本書給出的程序和例子均在MATLABRelease14(7.0)(完全安裝)版本下驗(yàn)證通過(guò)。2.1.2MATLAB快速入門

1.MATLAB的啟動(dòng)和退出

本書以WindowsXP下的MATLAB7.0為例,在其它Windows版本下的操作是類似的。假定已經(jīng)正確安裝了MATLAB的Windows版本,從Windows的“開(kāi)始|程序”菜單中找到MATLAB圖標(biāo),單擊該圖標(biāo)即可進(jìn)入MATLAB環(huán)境。進(jìn)入MATLAB后,操作環(huán)境通常顯示的是MATLAB的命令窗口,在該窗口中可以輸入各種MATLAB命令和語(yǔ)句,通過(guò)命令方式與MATLAB進(jìn)行交互。雖然MATLAB也像通常的Windows程序一樣提供了菜單和快捷工具欄,通過(guò)它們可以很方便地對(duì)MATLAB進(jìn)行操作,但是建議讀者盡可能使用命令方式去操作MATLAB。雖然剛開(kāi)始可能覺(jué)得不太方便,但是與菜單和快捷工具方式相比,命令方式的功能最為強(qiáng)大,也最能體現(xiàn)MATLAB的精髓,而且命令方式本身也是跨平臺(tái)的。在MATLAB命令窗口中,輸入命令的提示符為“>>”。在MATLAB命令窗口中,鍵入命令“quit”或“exit”并按回車鍵,即可退出MATLAB環(huán)境。

2.在MATLAB中如何獲取幫助

MATLAB幾乎涉及了所有工程領(lǐng)域的數(shù)學(xué)問(wèn)題。因?yàn)镸ATLAB幫助文檔是唯一完全覆蓋MATLAB功能函數(shù)的權(quán)威技術(shù)文件,所以,善于利用MATLAB的幫助文檔將是非常重要的。在MATLAB命令窗口中,使用命令“intro”可以進(jìn)入MATLAB簡(jiǎn)介演示。而使用命令“demo”可以打開(kāi)MATLAB的演示窗口,其中包含了大量MATLAB程序的演示實(shí)例,對(duì)于初學(xué)者具有很高的參考價(jià)值。如果讀者需要打開(kāi)MATLAB的幫助文檔,則使用命令“helpwin”即可。如果要用瀏覽器打開(kāi)html形式的幫助文檔,則可使用命令“doc”。如果需要打開(kāi)MATLAB的某條命令或函數(shù)用法的html幫助文檔,則只需輸入以下命令:>>doc命令或函數(shù)名[回車]

如果要在命令窗口中顯示幫助信息,則只需輸入命令“help”。如果需要了解MATLAB的某條命令或函數(shù)的用法,則只需輸入以下命令:>>help命令或函數(shù)名[回車]例如,要查詢自然對(duì)數(shù)函數(shù)命令“l(fā)og”的用法,可使用命令:>>helplog[回車]

另外,MATLAB幫助文檔還以PDF電子文件格式提供,存放在MATLAB的安裝目錄中,讀者可以用AdobeReader等軟件閱讀。讀者也可以通過(guò)介紹MATLAB的若干網(wǎng)站獲取和交流關(guān)于應(yīng)用MATLAB的心得體會(huì)。

3.在MATLAB命令窗口中計(jì)算數(shù)學(xué)表達(dá)式

MATLAB語(yǔ)言是一種解釋性語(yǔ)言,它提供了方便的演算紙式的數(shù)學(xué)計(jì)算方式。在MATLAB命令窗口中輸入數(shù)學(xué)表達(dá)式,然后回車即可得出計(jì)算結(jié)果。MATLAB的數(shù)學(xué)表達(dá)式與數(shù)學(xué)公式表達(dá)極為相似,也非常類似于C語(yǔ)言的表達(dá)。例如,計(jì)算表達(dá)式2sin(0.3π)/(1+

)的值,在MATLAB命令窗口中輸入以下語(yǔ)句并回車就能得到結(jié)果:>>2*sin(0.3*pi)/(1+sqrt(5))[回車]

ans=

0.5000>>以上語(yǔ)句中,“pi”是MATLAB已定義的常數(shù),即圓周率π;“ans”是表達(dá)式計(jì)算結(jié)果的默認(rèn)存儲(chǔ)變量。

MATLAB定義的常數(shù)中,常用的有以下一些:

ans最新表達(dá)式計(jì)算結(jié)果的默認(rèn)存儲(chǔ)變量

inf 表示正無(wú)窮大,即+∞

NaN 非數(shù),例如0/0將得到非數(shù)

i或j 虛數(shù)單位,即

eps 從1.0到下一個(gè)最大浮點(diǎn)數(shù)的距離,常用來(lái)作為浮點(diǎn)計(jì)算相對(duì)誤差使用

pi 圓周率π

realmin

MATLAB所能表示的最小正實(shí)數(shù)

realmax

MATLAB所能表示的最大正實(shí)數(shù)

MATLAB中常用的算術(shù)運(yùn)算符有+、-、*、/、\、^、′等,含義如下:

+ 數(shù)量加法,矩陣加法

- 數(shù)量減法,矩陣減法* 數(shù)量乘法,矩陣乘法

.*數(shù)組乘法

/ 數(shù)量除法,矩陣右除\ 數(shù)量除法(左除),矩陣左除

./數(shù)組除法

^ 矩陣乘方

.^數(shù)組乘方

′ 矩陣的共軛轉(zhuǎn)置,對(duì)于一個(gè)復(fù)數(shù)而言將得到其共軛復(fù)數(shù)

.′ 矩陣轉(zhuǎn)置(不共軛)關(guān)于這些算術(shù)運(yùn)算符的詳細(xì)用法以及示例,可以用>>docarithmeticoperators[回車]打開(kāi)html格式的幫助文檔查看。

4.在MATLAB命令窗口中輸入簡(jiǎn)單矩陣

例如,輸入矩陣時(shí),可以采用下面的方法:>>A=[1,2,3;4,5,6;7,8,9][回車]

A=

1 2 3

4 5 6

7 8 9

MATLAB中可以采用逗號(hào)或空格來(lái)分隔矩陣中的列元素,而采用分號(hào)或回車符來(lái)分隔矩陣的行,整個(gè)矩陣包含在方括號(hào)“[]”內(nèi)。采用命令“whos”可以查看用戶在MATLAB工作空間(內(nèi)存)中所存儲(chǔ)的變量情況。使用命令“workspace”就可以打開(kāi)工作空間瀏覽器窗口,雙擊其中的變量可以對(duì)其值進(jìn)行修改。命令“clear變量名”可以清除相應(yīng)的變量,而命令“clear”則可以清除所有用戶自定義的變量。系統(tǒng)的默認(rèn)變量是不會(huì)被“clear”清除的。為了避免前面的程序?qū)罄m(xù)程序的影響,通常在程序的開(kāi)始使用“clear”語(yǔ)句來(lái)復(fù)位MATLAB的內(nèi)存空間。使用命令“clc”可以清除命令窗口中的顯示字符。使用命令“home”可以使得命令窗口中的提示符光標(biāo)回到窗口的左上角。這兩個(gè)命令僅僅影響屏幕的顯示,不會(huì)清除內(nèi)存中的變量。

5.MATLAB的語(yǔ)句和變量

MATLAB語(yǔ)句可以有兩種形式:

(1)表達(dá)式;

(2)變量名=表達(dá)式。在第一種形式中,表達(dá)式計(jì)算的值將存放于默認(rèn)變量“ans”中;而在第二種形式中,表達(dá)式計(jì)算的值將存放于變量名所指定的變量中。MATLAB中多條語(yǔ)句可以在一行內(nèi)書寫,以逗號(hào)“,”或分號(hào)“;”相互隔開(kāi)。如果是以分號(hào)隔開(kāi)的,則計(jì)算結(jié)果不顯示在屏幕上,否則回車后將顯示計(jì)算結(jié)果。例如,計(jì)算1+2+3+…+100的值以及100的階乘100!。>>s=[1:100];sum(s),p=prod(s)[回車]

ans=

5050

p=

9.3326e+157

MATLAB中的變量是區(qū)分大小寫的,變量、函數(shù)名必須以字母開(kāi)頭,其后最多可接19個(gè)字母、數(shù)字或下劃線。例如:a和A是不同的變量,p121_6、yinyue3是合法的變量名,而3sd則是非法的變量。在給變量或函數(shù)命名時(shí),應(yīng)該養(yǎng)成良好的命名習(xí)慣,命名不要和MATLAB中的系統(tǒng)函數(shù)或變量相同。特別地,如果計(jì)算中存在復(fù)數(shù)運(yùn)算,那么就應(yīng)該避免采用“i”和“j”作為循環(huán)變量。

MATLAB中可以方便地進(jìn)行復(fù)數(shù)運(yùn)算,例如計(jì)算,其中a=15+j3,b=5ej2??稍诿畲翱谥休斎?

>>a=15+j*3,b=5*exp(j*2),(a.^2+b).^(1/5)[回車]

6.繪制簡(jiǎn)單的函數(shù)曲線

MATLAB提供了極為便利的數(shù)據(jù)可視化手段,可以作出任意函數(shù)的圖像。作為快速入門,在此以一個(gè)二維作圖為例,作出函數(shù)y=e-x/10sinx在x∈[-1,10]范圍的圖像。>>x=-1:0.1:20;%定義x的范圍和步進(jìn)[回車]>>y=exp(-x./10).*sin(x); %計(jì)算函數(shù)值[回車]>>plot(x,y);grid; %作出函數(shù)圖像,并在坐標(biāo)上畫出網(wǎng)格[回車]

結(jié)果如圖2-1所示。注意,在程序語(yǔ)句中,以百分號(hào)“%”開(kāi)始的是注釋部分。關(guān)于“plot”的詳細(xì)用法和例子,可以用“docplot”命令查看幫助文檔。圖2-1函數(shù)y=e-x/10sinx在x∈[-1,10]范圍的圖像

7.編寫簡(jiǎn)單的MATLAB程序

MATLAB是解釋性語(yǔ)言,輸入一行語(yǔ)句后回車,就會(huì)立即執(zhí)行并得出結(jié)果。如果要實(shí)現(xiàn)比較復(fù)雜的功能,單靠一條一條地在命令窗口中輸入指令來(lái)執(zhí)行,效率是很低的。如何解決這個(gè)問(wèn)題呢?為此MATLAB提供了擴(kuò)展名為“.m”的文本文件,在文件中事先寫入一行行的MATLAB命令,存盤后從MATLAB的命令窗口調(diào)入執(zhí)行(類似于DOS下的批處理),這種文件稱為底稿文件或MATLAB腳本文件。用前面作圖的三條語(yǔ)句為例,在文本編輯器中輸入這些語(yǔ)句,然后將文件存盤,例如將文件命名為“my1stprg.m”,保存于MATLAB的默認(rèn)工作路徑中。然后回到MATLAB命令窗口,在提示符“>>”下鍵入文件名(可以省略擴(kuò)展名)后回車,即可運(yùn)行程序并得到結(jié)果:>>my1stprg[回車]在任何一種純文本編輯器中均可以書寫MATLAB程序,只要以“.m”為擴(kuò)展名保存,即可在MATLAB中調(diào)用運(yùn)行。

MATLAB命令窗口中,在提示符“>>”后輸入的命令語(yǔ)句要回車才能執(zhí)行,本書以后的例子中,將省略[回車]字樣,在此提醒讀者注意。2.1.3MATLAB程序設(shè)計(jì)

1.M文件簡(jiǎn)介

MATLAB除了如前所述的在命令窗口進(jìn)行的直接交互的指令操作方式外,另外一種更為重要的工作方式就是M文件的編程工作方式。M文件有兩種形式,一種是腳本文件,另一種是函數(shù)文件。M文件的擴(kuò)展名為“.m”。M文件可以通過(guò)任何純文本編輯器進(jìn)行編輯,MATLAB中也有自帶的文本編輯器,使用“edit”命令即可開(kāi)啟。

2.程序控制流語(yǔ)句任何計(jì)算機(jī)語(yǔ)言,只要利用順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)以及分支結(jié)構(gòu),就可以完成任何程序功能。在MATLAB中也有這三種基本的程序結(jié)構(gòu)。但值得注意的是,由于MATLAB語(yǔ)言的矩陣計(jì)算功能十分強(qiáng)大,常常僅使用順序結(jié)構(gòu)通過(guò)矩陣的邏輯運(yùn)算就可以完成計(jì)算任務(wù)。由于循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu)在MATLAB語(yǔ)言中的運(yùn)行速度相對(duì)較慢,因此在算法優(yōu)化的編程中應(yīng)當(dāng)盡可能避免使用,而代之以矩陣運(yùn)算,從而提高程序運(yùn)行速度,簡(jiǎn)化程序代碼,并使得程序代碼更加接近于數(shù)學(xué)表達(dá)。當(dāng)然,采用矩陣編程的編程方法需要讀者具有更多的關(guān)于線性代數(shù)和矩陣數(shù)學(xué)的知識(shí)和思維方式。順序結(jié)構(gòu)是MATLAB中最常用的程序結(jié)構(gòu),也是執(zhí)行效率最高的程序結(jié)構(gòu)。順序結(jié)構(gòu)的語(yǔ)句是按照書寫的前后順序來(lái)執(zhí)行的。

MATLAB用于循環(huán)結(jié)構(gòu)的語(yǔ)句有兩種:“for…end”循環(huán)和“while…end”循環(huán)。

1)for…end語(yǔ)句利用“helpfor”或“docfor”可以獲得關(guān)于該語(yǔ)句的使用手冊(cè)?!癴or…end”語(yǔ)句適用于循環(huán)次數(shù)確定的情況,將循環(huán)變量的初值、判別和變化放在循環(huán)開(kāi)頭?!癴or…end”語(yǔ)句的調(diào)用形式是:

forv=表達(dá)式語(yǔ)句1;

語(yǔ)句n;

end…例如,最簡(jiǎn)單的for…end循環(huán):

fork=1:10

x(k)=k.^2;

end事實(shí)上,采用矩陣思想也可以獲得相同的結(jié)果,但編程更加簡(jiǎn)單明了:

k=1:10;x=k.^2

x=

1 4 9 16 25 36 49 64 81 100

絕大部分循環(huán)都可以遵從這樣的方法變成向量化(矩陣化)的算法,避免采用循環(huán)語(yǔ)句,從而大大提高程序的執(zhí)行效率。

2)while…end語(yǔ)句對(duì)于循環(huán)次數(shù)不能預(yù)先確定,而是由某個(gè)邏輯條件來(lái)控制循環(huán)次數(shù)的情況,MATLAB提供了“while…end”來(lái)實(shí)現(xiàn)。和“for…end”語(yǔ)句類似,“while…end”語(yǔ)句也允許嵌套?!皐hile…end”語(yǔ)句的一般形式是:

whilev=表達(dá)式語(yǔ)句1;

語(yǔ)句n;

end…例如,求當(dāng)整數(shù)n的階乘值是一個(gè)50位數(shù)的第一個(gè)數(shù)時(shí),n為多少?程序jiecheng50.m:

n=1; %n的初值

whileprod(1:n)<1e50

n=n+1;

end

n

n=

42

3)條件分支結(jié)構(gòu)“if”、“break”、“switch”語(yǔ)句“if”分支結(jié)構(gòu)的一般形式是:

if表達(dá)式語(yǔ)句段1;

else語(yǔ)句段2;

end“break”語(yǔ)句一般出現(xiàn)在循環(huán)體中,它表示跳出循環(huán)。仍然以前例加以說(shuō)明:求整數(shù)n的階乘值是一個(gè)50位數(shù)的第一個(gè)數(shù)時(shí),n為多少?現(xiàn)在使用“if”和“break”語(yǔ)句來(lái)編程。程序jiecheng50b.m:

n=1;%n的初值

while1 %構(gòu)成一個(gè)死循環(huán)

n=n+1;

ifprod(1:n)>1e50,break;end%滿足條件,則跳出循環(huán)

end

n %顯示結(jié)果

n=

42

“switch”語(yǔ)句用來(lái)實(shí)現(xiàn)多重分支結(jié)構(gòu)。其用法是:

switch開(kāi)關(guān)表達(dá)式

case表達(dá)式1語(yǔ)句,…,語(yǔ)句

case{表達(dá)式1,表達(dá)式2,表達(dá)式3,…}語(yǔ)句,…,語(yǔ)句

otherwise語(yǔ)句,…,語(yǔ)句

end

3.數(shù)據(jù)和文件的輸入/輸出

1)“input”指令“input”指令提示用戶從鍵盤輸入數(shù)據(jù)、字符串或表達(dá)式,并接受該輸入?!癷nput”指令的調(diào)用格式有兩種:

user_entry=input(′prompt′)%輸入數(shù)據(jù)或表達(dá)式和

user_entry=input(′prompt′,′s′) %輸入字符串例如:>>a=input(′請(qǐng)輸入矩陣或表達(dá)式,賦值到a:′) %輸入數(shù)據(jù)的例子請(qǐng)輸入矩陣或表達(dá)式,賦值到a:[12;34]

a=

1 2

3 4>>a=input(′請(qǐng)輸入矩陣或表達(dá)式,賦值到a:′) %輸入表達(dá)式的例子請(qǐng)輸入矩陣或表達(dá)式,賦值到a:sin(1)+8

a=

8.8415>>s=input(′請(qǐng)輸入一個(gè)字符串:′,′s′) %輸入字符串的例子請(qǐng)輸入一個(gè)字符串:thisisastring

s=

thisisastring

2)“pause”指令“pause”指令可以使程序暫停運(yùn)行,等待用戶按任意鍵繼續(xù)?!皃ause”指令主要用于程序調(diào)試或顯示中間結(jié)果?!皃ause(n)”指令可使得程序暫停執(zhí)行n秒。

3)利用文件輸入/輸出數(shù)據(jù)指令“save”和“l(fā)oad”用于MATLAB與磁盤的數(shù)據(jù)交換。“save”指令用于將MATLAB工作空間的數(shù)據(jù)存入磁盤;“l(fā)oad”指令則用于將數(shù)據(jù)從磁盤送入MATLAB工作空間。舉例說(shuō)明如下:

clear;

A=[l2;34];

b=81;

save(′c:\mymatlabdat.mat′,′A′,′b′);[WB]%將變量A和b保存在文件c:\mymatlabdat.mat中

clear %清除內(nèi)存變量

whos %查看,應(yīng)該無(wú)變量顯示

load(′c:\mymatlabdat.mat′);%調(diào)入數(shù)據(jù)文件c:\mymatlabdat.mat

whos

%顯示調(diào)入的變量

Name

Size BytesClass

A 2×2 32doublearray

b1×1 8doublearray

Grandtotalis5elementsusing40bytes

4.MATLAB編程的特點(diǎn)

MATLAB有兩種工作方式:一種是在命令窗口進(jìn)行的指令操作方式,前面我們所使用的大部分就是這種方式;另外一種是M文件編程方式,這種方式特別適合于復(fù)雜問(wèn)題的求解,是MATLAB高級(jí)應(yīng)用的一種常用方式。MATLAB編程中,要特別注意程序的書寫風(fēng)格,一個(gè)好的程序,必須思路清晰,注釋詳細(xì),而且是運(yùn)行速度較快的。M文件編程中開(kāi)頭的注釋行將作為該程序的幫助信息,可以在命令窗口中用“help”命令顯示出來(lái)。例如,編程計(jì)算函數(shù)f(x)=x3+x+lnxsinx+在x=1,3,5時(shí)的值。編寫腳本文件calcfx.m如下:

%這是開(kāi)頭的注釋行,可以用help命令顯示

%程序calcfx.m的功能是計(jì)算表達(dá)式

clear;%清除MATLAB內(nèi)存空間,這一命令常用于腳本文件的首句%以避免前面命令在內(nèi)存空間形成的變量的意外影響

k=1;%數(shù)組下標(biāo)變量,在MATLAB編程中,注釋要盡可能詳盡!

Int_F=inline(′t′,′t′);%用inline函數(shù)建立積分的被積函數(shù)

forx=[1,3,5]

f_x(k)=x^3+x+log(x)*sin(x)+quad8(Int_F,0,x);%計(jì)算表達(dá)式的值k=k+1; %數(shù)組下標(biāo)加1

end

f_x %顯示計(jì)算結(jié)果文件編輯存盤后,在MATLAB命令窗口執(zhí)行:>>helpcalcfx這是開(kāi)頭的注釋行,可以用help命令顯示。程序calcfx.m的功能是計(jì)算表達(dá)式:>>calcfx

f_x=

2.5000 34.6550 140.9567>>

5.MATLAB函數(shù)編程

如果M文件的第一行是以關(guān)鍵字“function”開(kāi)頭的,則其就是函數(shù)文件。函數(shù)文件是MATLAB程序設(shè)計(jì)的主流,MATLAB自身所帶的許多函數(shù)(指令)都是由相應(yīng)的函數(shù)文件來(lái)定義的。函數(shù)文件好像一個(gè)黑箱,將數(shù)據(jù)送進(jìn)去,經(jīng)過(guò)函數(shù)處理,然后將結(jié)果數(shù)據(jù)輸出。函數(shù)文件和腳本文件在內(nèi)存使用上存在重要的區(qū)別,函數(shù)文件內(nèi)部所定義的變量?jī)H僅在該函數(shù)文件內(nèi)部有效,函數(shù)返回后這些內(nèi)部變量將自動(dòng)被清除。也就是說(shuō),函數(shù)內(nèi)部所定義的變量?jī)H在函數(shù)內(nèi)部起作用,是局部變量。而腳本文件中所定義的變量,在使用“clear”命令清除之前,始終存在于工作空間當(dāng)中,是全局變量。另外,函數(shù)文件的文件名必須和函數(shù)名相同,切記不要和MATLAB中已經(jīng)定義的系統(tǒng)函數(shù)和其它自定義的函數(shù)同名。下面是函數(shù)編程的例子,函數(shù)的文件名與函數(shù)名相同,為stat.m。

function[mean,stdev]=stat(x)

n=length(x);%求輸入向量x的長(zhǎng)度

mean=sum(x)/n; %求平均值

stdev=sqrt(sum((x-mean).^2/n)); %求均方根值

6.測(cè)定程序的執(zhí)行時(shí)間和時(shí)間分配

利用“tic”和“toc”指令可以對(duì)程序段的執(zhí)行時(shí)間進(jìn)行測(cè)定,從而估計(jì)出程序執(zhí)行效率,并找出改進(jìn)程序、提高效率的方法?!皌ic”用于計(jì)時(shí)開(kāi)始,而“toc”用于計(jì)時(shí)結(jié)束并顯示計(jì)時(shí)結(jié)果。MATLAB還提供了對(duì)程序執(zhí)行的耗時(shí)剖析功能“profile”指令。用戶通過(guò)調(diào)用該功能函數(shù),可以輕松地觀察程序中各條語(yǔ)句的執(zhí)行耗時(shí)情況,從而為提高程序運(yùn)行效率的改進(jìn)思路提供參考依據(jù)。(詳細(xì)情況請(qǐng)參見(jiàn)在線幫助。)

7.提高程序執(zhí)行速度的原則

MATLAB是一種解釋性語(yǔ)言,它與C語(yǔ)言等編譯性語(yǔ)言有著相當(dāng)大的區(qū)別,如果按照C語(yǔ)言的思路去編寫MATLAB程序,那么執(zhí)行效率肯定不是很理想。要提高編程的執(zhí)行效率,則一定要根據(jù)MATLAB的特點(diǎn)來(lái)編寫程序,具體有以下原則:

(1)在編程中要盡量避免采用循環(huán)語(yǔ)句。利用向量化語(yǔ)句來(lái)代替循環(huán)語(yǔ)句可以大大提高程序運(yùn)行速度。如果不得不采用多重循環(huán),那么內(nèi)循環(huán)的次數(shù)應(yīng)該盡可能多于外循環(huán)的次數(shù)。

(2)在使用大型數(shù)組或矩陣之前對(duì)其進(jìn)行初始化,即采用指令“zeros”或“ones”對(duì)矩陣定維,這樣可以減少M(fèi)ATLAB在內(nèi)存分配過(guò)程中的耗時(shí),大大提高運(yùn)行速度。

(3)應(yīng)該優(yōu)先考慮使用MATLAB的內(nèi)在函數(shù)。MATLAB的內(nèi)在函數(shù)是采用C語(yǔ)言優(yōu)化構(gòu)造的,并固化在MATLAB的內(nèi)核中,其運(yùn)行速度可以和C語(yǔ)言的速度等價(jià),而用戶自行編制的M文件則是在MATLAB中解釋執(zhí)行的。另外,采用更先進(jìn)更有效的算法也可以提高計(jì)算效率??焖俑盗⑷~變換就是一個(gè)典型的例子。2.2MATLAB的幫助文件

MATLAB為用戶提供了非常詳盡的幫助文件,同時(shí)提供多種格式的幫助文件供用戶選擇,如幫助窗口、HTML以及PDF格式的幫助文件等。此外,MATLAB還提供了大量的幫助實(shí)例和演示供用戶使用。通過(guò)使用MATLAB的幫助菜單或在命令窗口中輸入幫助命令,用戶可獲得所需要的幫助信息,并可以借助幫助文件深入學(xué)習(xí)MATLAB。常用的幫助命令如表2-1所示。表2-1常用的幫助命令一覽表2.2.1常用幫助命令

1.help命令

help是MATLAB最常用的幫助命令,它可以查詢所有MATLAB函數(shù)的用法,并提供絕大多數(shù)MATLAB命令的使用方法的聯(lián)機(jī)說(shuō)明。在使用過(guò)程中,用戶可以隨時(shí)使用MATLAB的help命令來(lái)獲得幫助。help命令有如下用法:

·直接輸入help,MATLAB將列出所有的幫助主題,每個(gè)幫助主題對(duì)應(yīng)于MATLAB搜索路徑中的一個(gè)目錄。

·help后加幫助主題,可獲得指定幫助主題的幫助信息。例如,輸入helpsimulink,將得到simulink的幫助信息。

·help后加函數(shù)名,可獲得該函數(shù)的幫助信息。例如,要獲得正弦函數(shù)sin的幫助信息,可在命令窗口鍵入:

helpsin%輸入內(nèi)容helpsin

MATLAB輸出:

SIN Sine.

SIN(X)isthesineoftheelementsofX.

Overloadedmethods

helpsym/sin.m

·help后加命令名,將得到指定命令的用法。例如,要獲得what的幫助信息,可在命令窗口鍵入:

helpwhat %在MATLAB工作窗口中輸入helpwhat后按Enter鍵,查找what的用法

MATLAB將顯示以下內(nèi)容:

WHATListMATLAB-specificfilesindirectory.

ThecommandWHAT,byitself,liststheM-files,MAT-files

andMEX-filesinthecurrentworkingdirectory

ThecommandWHATDIRNAMEliststhefilesindirectorydirnameon

theMATLABPATH.Itisnotnecessarytogivethefullpathnameof

thedirectory;aMATLABPATHrelativepartialpathnamecanbe

specifiedinstead(seePARTIALPATH).Forexample,"whatgeneral"

and"whatmatlab/general"bothlisttheM-filesindirectory

toolboxl/matlab/general.

W=WHAT(′directory′)returnstheresultsofWHATinastructure

arraywiththefields:

path --pathtodirectory

m --cellarrayofm-filenames.

mat --cellarrayofmat-filenames.

mex --cellarrayofmex-filenames.

mdl --cellarrayofmdl-filenames.

p --cellarrayofp-filenames.

classes --cellarrayofclassnames.

SeealsoDIR,WHO,WHICH,LOOKFOR. %顯示與what有關(guān)的其他命令

2.聯(lián)機(jī)演示(Demos)

MATLAB除了常規(guī)的幫助系統(tǒng)外,還設(shè)立了聯(lián)機(jī)演示系統(tǒng)。在該項(xiàng)內(nèi)容中,MATLAB設(shè)置了許多關(guān)于各個(gè)工具箱內(nèi)容的現(xiàn)成程序,用戶可以通過(guò)選擇自己所需的部分來(lái)學(xué)習(xí)相關(guān)內(nèi)容。用戶可以通過(guò)單擊Demos按鈕或者在命令窗口中運(yùn)行demo來(lái)進(jìn)入MATLAB的聯(lián)機(jī)演示界面,用戶還可以通過(guò)選擇Help|Demos命令來(lái)進(jìn)入聯(lián)機(jī)演示界面,如圖2-2所示。聯(lián)機(jī)演示窗口包含兩個(gè)部分:左邊的部分是項(xiàng)目欄,用戶可以用鼠標(biāo)選擇所需演示的項(xiàng)目;右邊是對(duì)此項(xiàng)目的說(shuō)明文字。雙擊左邊項(xiàng)目欄的具體內(nèi)容,或者單擊該項(xiàng)內(nèi)容,再單擊右邊說(shuō)明框中的Runthisdemo按鈕,MATLAB都會(huì)彈出新的窗口進(jìn)行聯(lián)機(jī)演示操作。圖2-2聯(lián)機(jī)演示界面例如,在圖2-2左邊欄項(xiàng)目中選擇MATLAB|Graphics|3DPlots,MATLAB將打開(kāi)如圖2-3所示的演示窗口。雙擊圖2-3中左側(cè)的3-DPlots按鈕或者單擊右側(cè)的Runthisdemo按鈕,將彈出XYZplotsinMATLAB對(duì)話框,如圖2-4所示,該對(duì)話框主要分為三個(gè)部分:主體部分用于顯示運(yùn)算或者圖形結(jié)果;下面部分用于顯示對(duì)主體窗口結(jié)果的說(shuō)明;右側(cè)部分是控制按鈕。圖2-33-DPlots演示圖2-4XYZplotsinMATLAB對(duì)話框

3.helpwin命令

helpwin命令用于打開(kāi)MATLAB的幫助文件窗口,在命令窗口中直接鍵入helpwin,將出現(xiàn)如圖2-5所示的幫助窗口。選擇【Help】→【MATLABHelp】選項(xiàng),可打開(kāi)同樣的幫助窗口,只是所顯示的幫助主題的起點(diǎn)略有不同。在聯(lián)機(jī)幫助系統(tǒng)中,左側(cè)部分為導(dǎo)向界面,顯示了MATLAB所有內(nèi)容的目錄樹(shù)列表,選中相關(guān)項(xiàng)目,右側(cè)部分為幫助顯示界面,顯示該項(xiàng)目的詳細(xì)說(shuō)明。幫助導(dǎo)向界面下側(cè)的四個(gè)標(biāo)簽分別為幫助主題(Contents)、幫助索引(Index)、幫助查詢(Search)和聯(lián)機(jī)演示(Demos)。單擊Search標(biāo)簽,在右側(cè)的文本框中輸入要查詢的命令名或關(guān)鍵宇,按【Go】按鈕或Enter鍵,下方的文本框中將會(huì)顯示相關(guān)的幫助內(nèi)容,右邊的列表框中將會(huì)顯示相關(guān)的主題。圖2-5聯(lián)機(jī)幫助系統(tǒng)2.2.2其他幫助命令下面簡(jiǎn)要介紹MATLAB除help、demo和helpwin以外的其余幾個(gè)較為常用的幫助命令。

1)lookfor

lookfor命令允許用戶通過(guò)完整的或部分關(guān)鍵字來(lái)搜索要查找的內(nèi)容,此命令在查找不知道確切名字的具有某種功能的命令或函數(shù)時(shí)極為有用。通常情況下,lookfor給出所查主題的幫助文件的第一行信息。

2)who和whos

who和whos的作用是列出在MATLAB工作內(nèi)存中駐留的變量名,whos命令可同時(shí)給出變量的詳細(xì)信息,例如變量的維數(shù)、大小以及所占用的字節(jié)和類型。例如:用戶的某一MATLAB程序中有a、b、c三個(gè)變量,現(xiàn)在用who和whos查詢駐留工作內(nèi)存中的變量情況。

who %在MATLAB工作窗口中鍵入who,并按Enter鍵

MATLAB將顯示:

Yourvariablesare:

abc

whos %在MATLAB工作窗口中鍵入whos,并按Enter鍵

MATLAB的顯示內(nèi)容為:

Name SizeBytesClass

a 1×1 8doublearray

b 1×1 8doublearray

c 4×4

128doublearray

Grandtotalis18elementsusing144bytes

3)exist

exist命令用來(lái)查找或檢查變量和函數(shù)的存在性,并返回一個(gè)0到7之間的數(shù)值。exist命令的用法和返回值的含義列于表2-2和表2-3中。表2-2exist的用法表2-3exist返回值的含義2.3MATLAB7.0的新增功能

MATLAB7.0在以前版本的基礎(chǔ)上進(jìn)行了完善和擴(kuò)充,在開(kāi)發(fā)環(huán)境、數(shù)學(xué)運(yùn)算、編程和數(shù)據(jù)類型、外部接口、圖形和圖形用戶接口創(chuàng)建方面增加了新功能。由于與6.5版本發(fā)布的時(shí)間較近,為了方便讀者,本書將結(jié)合MATLAB6.5和MATLAB7.0的新增功能進(jìn)行介紹。

1.開(kāi)發(fā)環(huán)境

(1)MATLAB可以運(yùn)行于Windows、Linux、Solaris和Macintosh平臺(tái)下。

(2)在窗口的左下角新增了“Start”按鈕。啟動(dòng)MATLAB后,在操作界面的左下角可以看到一個(gè)標(biāo)有Start按鈕,這是MATLAB7.0版本新增的按鈕。單擊該按鈕之后,會(huì)出現(xiàn)如圖2-6所示的菜單,其中上半部分的子菜單包括MATLAB操作、工具箱總集、Simulink及Blocksets,下半部分的子菜單包括桌面工具、訪問(wèn)公司網(wǎng)站、幫助文件、演示程序等。

(3)在命令窗口菜單Edit項(xiàng)里還增加了Find對(duì)話框,可以在命令窗口、歷史命令窗口、當(dāng)前M文件目錄、所選擇文件的當(dāng)前目錄、整個(gè)MATLAB路徑中搜索該關(guān)鍵字。圖2-6快速啟動(dòng)

(4)打印功能。選擇File→PageSetup選項(xiàng),可選擇打印命令窗口的某一部分以及采用何種字體等,如圖2-7所示。

(5)對(duì)于命令窗口的優(yōu)選項(xiàng),增加了Keyboard和Indenting優(yōu)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論