




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園戶外活動(dòng)的教研探討計(jì)劃
- 第19課 探索宇宙(教學(xué)設(shè)計(jì))-2023-2024學(xué)年六年級(jí)科學(xué)下冊(cè)同步備課(青島版)
- 加強(qiáng)倉(cāng)庫(kù)流程管理的實(shí)施方案計(jì)劃
- 《貴州創(chuàng)泰礦業(yè)有限公司修文縣龍場(chǎng)鎮(zhèn)高倉(cāng)老二洞鋁鐵礦山礦產(chǎn)資源綠色開(kāi)發(fā)利用方案(三合一)》評(píng)審意見(jiàn)
- (高清版)DB3715∕T 7-2022 黑水虻飼養(yǎng)技術(shù)規(guī)程
- 統(tǒng)編版小學(xué)語(yǔ)文二年級(jí)下冊(cè)第3課《開(kāi)滿鮮花的小路》精美課件
- Unit 7 Days and Months Lesson 5 colorful seasons 教學(xué)設(shè)計(jì) 2024-2025學(xué)年冀教版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 固態(tài)電池知識(shí)培訓(xùn)課件
- 能源行業(yè):石油工程師簡(jiǎn)歷
- 初中體育與健康 初二上 水平四 八年級(jí)(第一學(xué)期)籃球大單元教學(xué)設(shè)計(jì)+體前變向換手運(yùn)球突破投籃教學(xué)設(shè)計(jì)
- DL5190.4-2019電力建設(shè)施工技術(shù)規(guī)范第4部分:熱工儀表及控制裝置
- 2024年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)附答案
- 六年級(jí)語(yǔ)文下冊(cè)第五單元教材解析
- 《通信電源培訓(xùn)》課件
- 《CT檢查技術(shù)》課件-CT圖像后處理
- 水產(chǎn)生物遺傳育種學(xué)課件
- 婦產(chǎn)科醫(yī)患溝通護(hù)理課件
- 第3課《萬(wàn)物共存》課件
- 精致的八寶飯
- GB/T 43602-2023物理氣相沉積多層硬質(zhì)涂層的成分、結(jié)構(gòu)及性能評(píng)價(jià)
- 醫(yī)院預(yù)算執(zhí)行情況分析報(bào)告
評(píng)論
0/150
提交評(píng)論