LABoratory(矩陣實驗室)的縮寫_第1頁
LABoratory(矩陣實驗室)的縮寫_第2頁
LABoratory(矩陣實驗室)的縮寫_第3頁
LABoratory(矩陣實驗室)的縮寫_第4頁
LABoratory(矩陣實驗室)的縮寫_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB軟 件 基 礎(chǔ)§1 MATLAB 概述MATLAB 是MATrix LABoratory(“矩陣實驗室”)的縮寫,是由美國MathWorks 公司開發(fā)的集數(shù)值計算、符號計算和圖形可視化三大基本功能于一體的,功能強大、操作簡單的語言。是國際公認的優(yōu)秀數(shù)學應(yīng)用軟件之一。20世紀80年代初期,Cleve Moler與John Little等利用C語言開發(fā)了新一代的MATLAB語言,此時的MATLAB語言已同時具備了數(shù)值計算功能和簡單的圖形處理功能。1984年,Cleve Moler與John Little等正式成立了Mathworks公司,把MATLAB語言推向市場,并開始了對

2、MATLAB工具箱等的開發(fā)設(shè)計。1993年,Mathworks公司推出了基于個人計算機的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12)?,F(xiàn)在,MATLAB已經(jīng)發(fā)展成為適合多學科的大型軟件,在世界各高校,MATLAB已經(jīng)成為線性代數(shù)、數(shù)值分析、數(shù)理統(tǒng)計、優(yōu)化方法、自動控制、數(shù)字信號處理、動態(tài)系統(tǒng)仿真等高級課程的基本教學工具。特別是最近幾年,MATLAB在我國大學生數(shù)學建模競賽中的應(yīng)用,為參賽者在有限的時間內(nèi)準確、有效的解決問題提供了有力的保證。概括地講,整個MATLAB系統(tǒng)

3、由兩部分組成,即MATLAB內(nèi)核及輔助工具箱,兩者的調(diào)用構(gòu)成了MATLAB的強大功能。MATLAB語言以數(shù)組為基本數(shù)據(jù)單位,包括控制流語句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入輸出及面向?qū)ο蟮忍攸c的高級語言,它具有以下主要特點:1)運算符和庫函數(shù)極其豐富,語言簡潔,編程效率高,MATLAB除了提供和C語言一樣的運算符號外,還提供廣泛的矩陣和向量運算符。利用其運算符號和庫函數(shù)可使其程序相當簡短,兩三行語句就可實現(xiàn)幾十行甚至幾百行C或FORTRAN的程序功能。2)既具有結(jié)構(gòu)化的控制語句(如for循環(huán)、while循環(huán)、break語句、if語句和switch語句),又有面向?qū)ο蟮木幊烫匦浴?)圖形功能強大。它既包括對

4、二維和三維數(shù)據(jù)可視化、圖像處理、動畫制作等高層次的繪圖命令,也包括可以修改圖形及編制完整圖形界面的、低層次的繪圖命令。4)功能強大的工具箱。工具箱可分為兩類:功能性工具箱和學科性工具箱。功能性工具箱主要用來擴充其符號計算功能、圖示建模仿真功能、文字處理功能以及與硬件實時交互的功能。而學科性工具箱是專業(yè)性比較強的,如優(yōu)化工具箱、統(tǒng)計工具箱、控制工具箱、小波工具箱、圖象處理工具箱、通信工具箱等。5)易于擴充。除內(nèi)部函數(shù)外,所有MATLAB的核心文件和工具箱文件都是可讀可改的源文件,用戶可修改源文件和加入自己的文件,它們可以與庫函數(shù)一樣被調(diào)用。§2 MATLAB的安裝與啟動2.1 MATL

5、AB的安裝要用MATLAB 6,首先必須在計算機上安裝MATLAB 6應(yīng)用軟件,隨著軟件功能的不斷完善,MATLAB對計算機系統(tǒng)配置的要求越來越高。下面給出安裝和運行MATLAB 6 所需要的計算機系統(tǒng)配置。 MATLAB 6對硬件的要求CPU要求:Pentium II、Pentium III、AMD Athlon或者更高;光驅(qū):8倍速以上;內(nèi)存:至少64MB,但推薦128MB以上;硬盤:視安裝方式不同要求不統(tǒng)一,但至少留1GB用于安裝(安裝后未必有1GB);顯卡:8位; MATLAB 6對軟件的要求Windows95 、Window98、Windows NT或Windows2000;Word

6、97或word2000等,用于使用MATLAB Notebook;Adobe Acrobat Reader 用于閱讀MATLAB的PDF的幫助信息。MATLAB 6的安裝和其它應(yīng)用軟件類似,可按照安裝向?qū)нM行安裝,這里不再贅述。2.2 MATLAB的啟動和退出與常規(guī)的應(yīng)用軟件相同,MATLAB的啟動也有多種方式,首先常用的方法就是雙擊桌面的MATLAB圖標,也可以在開始菜單的程序選項中選擇MATLAB組件中的快捷方式,當然也可以在MATLAB的安裝路徑的子目錄中選擇可執(zhí)行文件“MATLAB.exe”。 啟動MATLAB后,將打開一個MATLAB的歡迎界面,隨后打開MATLAB的桌面系統(tǒng)(Des

7、ktop)如圖2-1所示。圖2-1 MATLAB的桌面系統(tǒng)§3 MATLAB的開發(fā)環(huán)境MATLAB的開發(fā)環(huán)境就是在使用MATLAB的過程中可激活的,并且為用戶使用提供支持的集成系統(tǒng)。這里介紹幾個比較重要的如:桌面平臺系統(tǒng)、幫助系統(tǒng)和數(shù)據(jù)交換系統(tǒng)。3.1 MATLAB桌面平臺桌面平臺是各桌面組件的展示平臺,默認設(shè)置情況下的桌面平臺包括6個窗口,具體如下:3.1.1 MATLAB主窗口MATLAB6比早期版本增加了一個主窗口。該窗口不能進行任何計算任務(wù)的操作,只用來進行一些整體的環(huán)境參數(shù)的設(shè)置。3.1.2 命令窗口(Command Window)命令窗口是對MATLAB進行操作的主要載體

8、,默認的情況下,啟動MATLAB時就會打開命令窗口,顯示形式如圖1-1所示。一般來說,MATLAB的所有函數(shù)和命令都可以在命令窗口中執(zhí)行。在MATLAB命令窗口中,命令的實現(xiàn)不僅可以由菜單操作來實現(xiàn),也可以由命令行操作來執(zhí)行,下面就詳細介紹MALTAB命令行操作。實際上,掌握MALAB命令行操作是走入MATLAB世界的第一步,命令行操作實現(xiàn)了對程序設(shè)計而言簡單而又重要的人機交互,通過對命令行操作,避免了編程序的麻煩,體現(xiàn)了MATLAB所特有的靈活性。例如:在命令窗口中輸入sin(pi/5),然后單擊回車鍵,則會得到該表達式的值sin(pi/5)ans=0.5878由例可以看出,為求得表達式的值

9、,只需按照MALAB語言規(guī)則將表達式輸入即可,結(jié)果會自動返回,而不必像其他的程序設(shè)計語言那樣,編制冗長的程序來執(zhí)行。當需要處理相當繁瑣的計算時,可能在一行之內(nèi)無法寫完表達式,可以換行表示,此時需要使用續(xù)行符“”否則MATLAB將只計算一行的值,而不理會該行是否已輸入完畢。例如:sin(1/9*pi)+sin(2/9*pi)+sin(3/9*pi)+sin(4/9*pi)+sin(5/9*pi)+sin(6/9*pi)+sin(7/9*pi)+sin(8/9*pi)+sin(9/9*pi)+ans=5.6713使用續(xù)行符之后MATLAB會自動將前一行保留而不加以計算,并與下一行銜接,等待完整輸入

10、后再計算整個輸入的結(jié)果。在MATLAB命令行操作中,有一些鍵盤按鍵可以提供特殊而方便的編輯操作。比如:“”可用于調(diào)出前一個命令行,“”可調(diào)出后一個命令行,避免了重新輸入的麻煩。當然下面即將講到的歷史窗口也具有此功能。3.1.3 歷史窗口(Command History)歷史命令窗口是MATLAB6新增添的一個用戶界面窗口,默認設(shè)置下歷史命令窗口會保留自安裝時起所有命令的歷史記錄,并標明使用時間,以方便使用者的查詢。而且雙擊某一行命令,即在命令窗口中執(zhí)行該命令。3.1.4 發(fā)行說明書窗口(Launch Pad)發(fā)行說明書窗口是MATLAB6所特有的,用來說明用戶所擁有的Mathworks公司產(chǎn)品

11、的工具包、演示以及幫助信息。當選中該窗口中的某個組件之后,可以打開相應(yīng)的窗口工具包。3.1.5 當前目錄窗口(Current Directory )在當前目錄窗口中可顯示或改變當前目錄,還可以顯示當前目錄下的文件,包括文件名、文件類型、最后修改時間以及該文件的說明信息等并提供搜索功能。3.1.6 工作空間管理窗口(Workspace)工作空間管理窗口是MATLAB的重要組成部分。在工作空間管理窗口中將顯示所有目前保存在內(nèi)存中的MATLAB變量的變量名、數(shù)據(jù)結(jié)構(gòu)、字節(jié)數(shù)以及類型,而不同的變量類型分別對應(yīng)不同的變量名圖標。3.2 MATLAB幫助系統(tǒng)完善的幫助系統(tǒng)是任何應(yīng)用軟件必要的組成部分。MA

12、TLAB提供了相當豐富的幫助信息,同時也提供了獲得幫助的方法。首先,可以通過桌面平臺的【Help】菜單來獲得幫助,也可以通過工具欄的幫助選項獲得幫助。此外,MATLAB也提供了在命令窗口中的獲得幫助的多種方法,在命令窗口中獲得MATLAB幫助的命令及說明列于表3-1中。其調(diào)用格式為:命令+指定參數(shù)表3-1 命 令 說 明 doc在幫助瀏覽器中顯示指定函數(shù)的參考信息 help在命令窗口中顯示M文件幫助 helpbrowser打開幫助瀏覽器,無參數(shù) helpwin打開幫助瀏覽器,并且見初始界面置于MATLAB函數(shù)的M文件幫助信息 lookfor在命令窗口中顯示具有指定參數(shù)特征函數(shù)的M文件幫助 we

13、b顯示指定的網(wǎng)絡(luò)頁面,默認為MATLAB幫助瀏覽器例如: >>help sinSIN SineSIN(X) is the sine of the elements of X Overloaded methodsHelp sym/sin.m另外也可以通過在組件平臺中調(diào)用演示模型(demo)來獲得特殊幫助。3.3 數(shù)據(jù)交換系統(tǒng)MATLAB提供了多種方法將數(shù)據(jù)從磁盤或剪貼板中讀入MATLAB工作空間。具體的讀寫方法可依據(jù)用戶的喜好以及數(shù)據(jù)的類型來選擇。這里主要介紹文本數(shù)據(jù)的讀入。對于文本數(shù)據(jù)(ASCII)而言,最簡單的讀入方法就是通過MATLAB的數(shù)據(jù)輸入向?qū)В↖mport Wizard

14、),也可以通過MATLAB函數(shù)實現(xiàn)數(shù)據(jù)讀入。例如,對于文本文件test.txt:students scoresEnglish Chinese MathmaticsWang 99 98 100Li 98 89 70Zhang 80 90 97 Zhao 77 65 87下面通過上述兩種方法將該文件數(shù)據(jù)讀入MATLAB工作空間,先介紹MATLAB數(shù)據(jù)交換系統(tǒng)對文本數(shù)據(jù)的識別。此時文件的前幾行(此處為“students scores”)將被識別為文件頭,文件頭可以為一行或幾行,也可以識別出數(shù)據(jù)的列頭(此處為:“English”、“Chinese”、和“Mathmatics”)和行頭(此處為“wang

15、”、“l(fā)i”、“zhang”和“zhao”),其余的為可分斷數(shù)據(jù)(此處為“99”、“98”、和“100”等)。首先是通過數(shù)據(jù)輸入向?qū)Ь庉嬈髯x入數(shù)據(jù),通過桌面平臺上的【File】菜單中的【Import Data】選項打開輸入向?qū)Ь庉嬈?,按向?qū)崾具M行操作完成整個文本數(shù)據(jù)的輸入,則用戶可以在MATLAB開發(fā)環(huán)境中使用該文本數(shù)據(jù)。例如:>>whosName Size Bytes ClassData 43 96 double arrayGrand total is 12 elements using 96 bytes >>DataData = 99 98 10098 89 70

16、 80 90 9777 65 87“whos”用于顯示當前MATLAB工作空間的變量,而在命令窗口中輸入data 后,將顯示該數(shù)據(jù)。在命令窗口或M 文件中調(diào)用相應(yīng)的函數(shù)也可以實現(xiàn)數(shù)據(jù)的讀入。例如: >> a,b,c,d=textread(text.txt, %s %s %s %s, headlines, 2) (讀者可親自上機看結(jié)果)§4 MATLAB數(shù)值計算功能MATLAB強大的數(shù)值計算功能使其在諸多數(shù)學計算軟件中傲視群雄,是MATLAB軟件的基礎(chǔ)。本節(jié)將簡要介紹MATLAB的數(shù)據(jù)類型、矩陣的建立及運算。4.1 MATLAB 數(shù)據(jù)類型MATLAB的數(shù)據(jù)類型主要包括:數(shù)字

17、、字符串、矩陣、單元型數(shù)據(jù)及結(jié)構(gòu)型數(shù)據(jù)等,限于篇幅我們將重點介紹其中幾個常用類型。4.1.1 變量與常量變量是任何程序設(shè)計語言的基本要素之一,MATLAB語言當然也不例外。與常規(guī)的程序設(shè)計語言不同的MATLAB并不要求事先對所使用的變量進行聲明,也不需要指定變量類型,MATLAB語言會自動依據(jù)所賦予變量的值或?qū)ψ兞克M行的操作來識別變量的類型。在賦值過程中如果賦值變量已存在時,MATLAB語言將使用新值代替舊值,并以新值類型代替舊值類型。在MATLAB語言中變量的命名應(yīng)遵循如下規(guī)則:(1)變量名區(qū)分大小寫。(2)變量名長度不超31位,第31個字符之后的字符將被MATLAB語言所忽略。(3)變量

18、名以字母開頭,可以是字母、數(shù)字、下劃線組成,但不能使用標點。與其他的程序設(shè)計語言相同,在MATLAB語言中也存在變量作用域的問題。在未加特殊說明的情況下,MATLAB語言將所識別的一切變量視為局部變量,即僅在其使用的M文件內(nèi)有效。若要將變量定義為全局變量,則應(yīng)當對變量進行說明,即在該變量前加關(guān)鍵字global。一般來說全局變量均用大寫的英文字符表示。MATLAB語言本身也具有一些預(yù)定義的變量,這些特殊的變量稱為常量。表4-1給出了MATLAB語言中經(jīng)常使用的一些常量值。表4-1 常 量 表 示 數(shù) 值 pi圓周率 eps浮點運算的相對精度 inf正無窮大 NaN表示不定值 realmax最大的

19、浮點數(shù) i, j虛數(shù)單位在MATLAB語言中,定義變量時應(yīng)避免與常量名重復(fù),以防改變這些常量的值,如果已改變了某外常量的值,可以通過“clear+常量名”命令恢復(fù)該常量的初始設(shè)定值(當然,也可通過重新啟動MATLAB系統(tǒng)來恢復(fù)這些常量值)。4.1.2 數(shù)字變量的運算及顯示格式MALAB是以矩陣為基本運算單元的,而構(gòu)成數(shù)值矩陣的基本單元是數(shù)字。為了更好地學習和掌握矩陣的運算,首先對數(shù)字的基本知識作簡單的介紹。對于簡單的數(shù)字運算,可以直接在命令窗口中以平常慣用的形式輸入,如計算2和3的乘積再加1時,可以直接輸入:>> 1+2*3ans= 7這里“ans”是指當前的計算結(jié)果,若計算時用戶

20、沒有對表達式設(shè)定變量,系統(tǒng)就自動賦當前結(jié)果給“ans”變量。用戶也可以輸入:>> a=1+2*3a= 7此時系統(tǒng)就把計算結(jié)果賦給指定的變量a了。MATLAB語言中數(shù)值有多種顯示形式,在缺省情況下,若數(shù)據(jù)為整數(shù),則就以整數(shù)表示;若數(shù)據(jù)為實數(shù),則以保留小數(shù)點后4位的精度近似表示。MATLAB語言提供了10種數(shù)據(jù)顯示格式,常用的有下述幾種格式:short 小數(shù)點后4位(系統(tǒng)默認值)long 小數(shù)點后14位short e 5位指數(shù)形式long e 15位指數(shù)形式MATLAB語言還提供了復(fù)數(shù)的表達和運算功能。在MATLAB語言中,復(fù)數(shù)的基本單位表示為i或j。在表達簡單數(shù)數(shù)值時虛部的數(shù)值與i、

21、j之間可以不使用乘號,但是如果是表達式,則必須使用乘號以識別虛部符號。4.1.3 字符串字符和字符串運算是各種高級語言必不可少的部分,MATLAB中的字符串是其進行符號運算表達式的基本構(gòu)成單元。在MATLAB中,字符串和字符數(shù)組基本上是等價的;所有的字符串都用單引號進行輸入或賦值(當然也可以用函數(shù)char來生成)。字符串的每個字符(包括空格)都是字符數(shù)組的一個元素。例如: >>s=matrix laboratory; s= matrix laboratory>> size(s) % size查看數(shù)組的維數(shù)ans=1 17另外,由于MATLAB對字符串的操作與C語言幾乎完

22、全相同這里不在贅述。4.2 矩陣及其運算 矩陣是MATLAB數(shù)據(jù)存儲的基本單元,而矩陣的運算是MATLAB語言的核心,在MATLAB語言系統(tǒng)中幾乎一切運算均是以對矩陣的操作為基礎(chǔ)的。下面重點介紹矩陣的生成、矩陣的基本運算和矩陣的數(shù)組運算。 4.2.1 矩陣的生成1 直接輸入法從鍵盤上直接輸入矩陣是最方便、最常用的創(chuàng)建數(shù)值矩陣的方法,尤其適合較小的簡單矩陣。在用此方法創(chuàng)建矩陣時,應(yīng)當注意以下幾點: 輸入矩陣時要以“ ”為其標識符號,矩陣的所有元素必須都在括號內(nèi)。 矩陣同行元素之間由空格或逗號分隔,行與行之間用分號或回車鍵分隔。 矩陣大小不需要預(yù)先定義。 矩陣元素可以是運算表達式。 若“ ”中無元

23、素表示空矩陣。另外,在MATLAB語言中冒號的作用是最為豐富的。首先,可以用冒號來定義行向量。例如:>> a=1:0.5:4a= Columns through 7 1 1.5 2 2.5 3 3.5 4其次,通過使用冒號,可以截取指定矩陣中的部分。例如: >> A=1 2 3;4 5 6;7 8 9 A= 1 2 3 4 5 6 7 8 9>> B=A (1:2, : )B= 1 2 3 4 5 6通過上例可以看到B是由矩陣A的1到2行和相應(yīng)的所有列的元素構(gòu)成的一個新的矩陣。在這里,冒號代替了矩陣A的所有列。2外部文件讀入法MATLAB語言也允許用戶調(diào)用在

24、MATLAB環(huán)境之外定義的矩陣??梢岳萌我獾奈谋揪庉嬈骶庉嬎褂玫木仃嚕仃囋刂g以特定分斷符分開,并按行列布置。讀入矩陣的一種方法可參考3.3節(jié)數(shù)據(jù)交換系統(tǒng)。另外也可以利用load函數(shù),其調(diào)用方法為: Load+文件名參數(shù)Load函數(shù)將會從文件名所指定的文件中讀取數(shù)據(jù),并將輸入的數(shù)據(jù)賦給以文件名命名的變量,如果不給定文件名,則將自動認為matlab.mat文件為操作對象,如果該文件在MATLAB搜索路徑中不存在時,系統(tǒng)將會報錯。例如: 事先在記事本中建立文件: 1 1 1 (并以data1.txt保存) 1 2 3 1 3 6在MATLAB命令窗口中輸入: >> load

25、data1.txt>> data1 data1= 1 1 1 1 2 3 1 3 63特殊矩陣的生成對于一些比較特殊的矩陣(單位陣、矩陣中含1或0較多),由于其具有特殊的結(jié)構(gòu),MATLAB提供了一些函數(shù)用于生成這些矩陣。常用的有下面幾個:zeros(m) 生成m階全0矩陣eye(m) 生成m階單位矩陣ones(m) 生成m階全1矩陣rand(m) 生成m階均勻分布的隨機陣randn(m) 生成m階正態(tài)分布的隨機矩陣4.2.2 矩陣的基本數(shù)學運算矩陣的基本數(shù)學運算包括矩陣的四則運算、與常數(shù)的運算、逆運算、行列式運算、秩運算、特征值運算等基本函數(shù)運算,這里進行簡單介紹。1四則運算矩陣的

26、加、減、乘運算符分別為“+,*” ,用法與數(shù)字運算幾乎相同,但計算時要滿足其數(shù)學要求(如:同型矩陣才可以加、減)。在MATLAB中矩陣的除法有兩種形式:左除“”和右除“/”。在傳統(tǒng)的MATLAB算法中,右除是先計算矩陣的逆再相乘,而左除則不需要計算逆矩陣直接進行除運算。通常右除要快一點,但左除可避免被除矩陣的奇異性所帶來的麻煩。在MATLAB6中兩者的區(qū)別不太大。2與常數(shù)的運算 常數(shù)與矩陣的運算即是同該矩陣的每一元素進行運算。但需注意進行數(shù)除時,常數(shù)通常只能做除數(shù)。3基本函數(shù)運算 矩陣的函數(shù)運算是矩陣運算中最實用的部分,常用的主要有以下幾個:det(a) 求矩陣a的行列式eig(a) 求矩陣a

27、的特征值inv(a)或a (-1) 求矩陣a的逆矩陣rank(a) 求矩陣a的秩trace(a) 求矩陣a的跡(對角線元素之和)例如: >> a=2 1 3 1; 3 1 0 7; -1 2 4 2; 1 0 1 5;>> a1=det(a); >> a2=det(inv(a);>> a1*a2 ans= 1注意:命令行后加“;”表示該命令執(zhí)行但不顯示執(zhí)行結(jié)果。4.2.2 矩陣的數(shù)組運算我們在進行工程計算時常常遇到矩陣對應(yīng)元素之間的運算。這種運算不同于前面講的數(shù)學運算,為有所區(qū)別,我們稱之為數(shù)組運算。1基本數(shù)學運算數(shù)組的加、減與矩陣的加、減運算完

28、全相同。而乘除法運算有相當大的區(qū)別,數(shù)組的乘除法是指兩同維數(shù)組對應(yīng)元素之間的乘除法,它們的運算符為“.*”和“./”或“.”。前面講過常數(shù)與矩陣的除法運算中常數(shù)只能做除數(shù)。在數(shù)組運算中有了“對應(yīng)關(guān)系”的規(guī)定,數(shù)組與常數(shù)之間的除法運算沒有任何限制。另外,矩陣的數(shù)組運算中還有冪運算(運算符為 . )、指數(shù)運算(exp)、對數(shù)運算(log)、和開方運算(sqrt)等。有了“對應(yīng)元素”的規(guī)定,數(shù)組的運算實質(zhì)上就是針對數(shù)組內(nèi)部的每個元素進行的。例如: >> a=2 1 -3 -1; 3 1 0 7; -1 2 4 -2; 1 0 -1 5; >> a3 ans=32 -28 -1

29、01 3499 -12 -151 239-1 49 93 851 -17 -98 139>> a .3 ans=8 1 -27 -127 1 0 343-1 8 64 -8 1 0 -1 125由上例可見矩陣的冪運算與數(shù)組的冪運算有很大的區(qū)別。2邏輯關(guān)系運算 邏輯運算是MATLAB中數(shù)組運算所特有的一種運算形式,也是幾乎所有的高級語言普遍適用的一種運算。它們的具體符號、功能及用法見表4-2。表4-2符號運算符功 能函 數(shù) 名= =等于eq =不等于ne<小于lt>大于gt<=小于等于le>=大于等于ge&邏輯與and|邏輯或or邏輯非not 說明:

30、在關(guān)系比較中,若比較的雙方為同維數(shù)組,則比較的結(jié)果也是同維數(shù)組。它的元素值由0和1組成。當比較雙方對應(yīng)位置上的元素值滿足比較關(guān)系時,它的對應(yīng)值為1,否則為0。 當比較的雙方中一方為常數(shù),另一方為一數(shù)組,則比較的結(jié)果與數(shù)組同維。 在算術(shù)運算、比較運算和邏輯與、或、非運算中,它們的優(yōu)先級關(guān)系先后為: 比較運算、算術(shù)運算、邏輯與或非運算。例如: >>a=1 2 3; 4 5 6; 7 8 9;>> x=5;>> y= ones(3)*5;>> xa= x<=axa=0 0 00 1 11 1 1>> b=0 1 0; 1 0 1; 0

31、 0 1;>> ab=a&bab= 0 1 0 1 0 1 0 0 1§5 MATLAB圖形功能MATLAB有很強的圖形功能,可以方便地實現(xiàn)數(shù)據(jù)的視覺化。強大的計算功能與圖形功能相結(jié)合為MATLAB在科學技術(shù)和教學方面的應(yīng)用提供了更加廣闊的天地。下面著重介紹二維圖形的畫法,對三維圖形只作簡單敘述。5.1 二維圖形的繪制5.1.1 基本形式二維圖形的繪制是MATLAB語言圖形處理的基礎(chǔ),MATLAB最常用的畫二維圖形的命令是plot,看兩個簡單的例子: >> y=0 0.58 0.70 0.95 0.83 0.25;>> plot(y)生成的

32、圖形見圖5-1,是以序號為橫坐標、數(shù)組y的數(shù)值為縱坐標畫出的折線。>> x=linspace(0,2*pi,30); % 生成一組線性等距的數(shù)值>> y=sin(x); >> plot(x,y)生成的圖形見圖5-2,是上30個點連成的光滑的正弦曲線。 圖5-1 圖5-25.1.2 多重線在同一個畫面上可以畫許多條曲線,只需多給出幾個數(shù)組,例如>> x=0:pi/15:2*pi;>> y1=sin(x);>> y2=cos(x);>> plot(x,y1,x,y2)則可以畫出圖5-3。多重線的另一種畫法是利用ho

33、ld命令。在已經(jīng)畫好的圖形上,若設(shè)置hold on,MATLA將把新的plot命令產(chǎn)生的圖形畫在原來的圖形上。而命令hold off 將結(jié)束這個過程。例如:>> x=linspace(0,2*pi,30); y=sin(x); plot(x,y)先畫好圖5-2,然后用下述命令增加cos(x)的圖形,也可得到圖5-3。>> hold on>> z=cos(x); plot(x,z) >> hold off 圖5-3 圖5-4 5.1.3 線型和顏色MATLAB對曲線的線型和顏色有許多選擇,標注的方法是在每一對數(shù)組后加一個字符串參數(shù),說明如下:線型

34、線方式: - 實線 :點線 -. 虛點線 - - 波折線。線型 點方式: . 圓點 +加號 * 星號 x x形 o 小圓顏色: y黃; r紅; g綠; b藍; w白; k黑; m紫; c青.以下面的例子說明用法:>> x=0:pi/15:2*pi; >> y1=sin(x); y2=cos(x); >> plot(x,y1,b:+,x,y2,g-.*)可得圖形5-4。5.1.4 網(wǎng)格和標記在一個圖形上可以加網(wǎng)格、標題、x軸標記、y軸標記,用下列命令完成這些工作。>> x=linspace(0,2*pi,30); y=sin(x); z=cos(x

35、);>> plot(x,y,x,z)>> grid>> xlabel(Independent Variable X)>> ylabel(Dependent Variables Y and Z)>> title(Sine and Cosine Curves)它們產(chǎn)生圖5-5: 圖5-5也可以在圖形的任何位置加上一個字符串,如用:>> text(2.5,0.7,sinx)表示在坐標x=2.5, y=0.7處加上字符串sinx。更方便的是用鼠標來確定字符串的位置,方法是輸入命令: >> gtext(sinx)在圖形窗

36、口十字線的交點是字符串的位置,用鼠標點一下就可以將字符串放在那里。5.1.5 坐標系的控制在缺省情況下MATLAB自動選擇圖形的橫、縱坐標的比例,如果你對這個比例不滿意,可以用axis命令控制,常用的有:axis(xmin xmax ymin ymax) 中分別給出x軸和y軸的最大值、最小值axis equal 或 axis(equal) x軸和y軸的單位長度相同axis square 或 axis(square) 圖框呈方形axis off 或 axis(off) 清除坐標刻度還有axis auto axis image axis xy axis ij axis normal axis on

37、 axis(axis)用法可參考在線幫助系統(tǒng)。5.1.6 多幅圖形可以在同一個畫面上建立幾個坐標系, 用subplot(m,n,p)命令;把一個畫面分成m×n個圖形區(qū)域, p代表當前的區(qū)域號,在每個區(qū)域中分別畫一個圖,如>> x=linspace(0,2*pi,30); y=sin(x); z=cos(x);>> u=2*sin(x).*cos(x); v=sin(x)./cos(x);>> subplot(2,2,1),plot(x,y),axis(0 2*pi 1 1),title(sin(x)>> subplot(2,2,2),p

38、lot(x,z),axis(0 2*pi 1 1),title(cos(x)>> subplot(2,2,3),plot(x,u),axis(0 2*pi 1 1),title(2sin(x)cos(x)>> subplot(2,2,4),plot(x,v),axis(0 2*pi 20 20),title(sin(x)/cos(x)共得到4幅圖形,見圖5-6. 圖5-65.2 三維圖形限于篇幅這里只對幾種常用的命令通過例子作簡單介紹.5.2.1 帶網(wǎng)格的曲面例 作曲面z=f(x,y)的圖形 用以下程序?qū)崿F(xiàn):>> x=-7.5:0.5;7.5; >&g

39、t; y=x;>> X,Y=meshgrid(x,y); (3維圖形的X,Y數(shù)組)>> R=sqrt(X.2+Y.2)+eps; (加eps是防止出現(xiàn)0/0)>> Z=sin(R)./R;>> mesh(X,Y,Z) (3維網(wǎng)格表面)畫出的圖形如圖5-7. mesh命令也可以改為surf, 只是圖形效果有所不同,讀者可以上機查看結(jié)果。 圖5-7 圖5-8 5.2.2 空間曲線例 作螺旋線 x=sint, y=cost, z=t用以下程序?qū)崿F(xiàn):>> t=0:pi/50:10*pi;>> plot3(sin(t),cos(t)

40、,t) (空間曲線作圖函數(shù), 用法類似于plot)畫出的圖形如圖5-85.2.3 等高線用contour 或 contour3 畫曲面的等高線,如對圖5-7的曲面, 在上面的程序后接contour(X,Y,Z,10) 即可得到10條等高線。5.2.4 其它較有用的是給三維圖形指定觀察點的命令view(azi,ele),azi 是方位角, ele 是仰角.缺省時 azi=ele=. 5.3 圖形的輸出在數(shù)學建模中,往往需要將產(chǎn)生的圖形輸出到Word文檔中。通??刹捎孟率龇椒ǎ菏紫?,在MATLAB圖形窗口中選擇【File】菜單中的【Export】選項,將打開圖形輸出對話框,在該對話框中可以把圖形以

41、emf、bmp、jpg、pgm等格式保存。然后,再打開相應(yīng)的文檔,并在該文檔中選擇【插入】菜單中的【圖片】選項插入相應(yīng)的圖片即可。§6 程序設(shè)計 MATLAB作為一種高級語言,它不僅可以如前幾節(jié)所介紹的那樣,以一種人機交互式的命令行的方式工作,還可以像BASIC、FORTRAN、C等其他高級計算機語言一樣進行控制流的程序設(shè)計,即編制一種以 . m為擴展名的MATLAB程序(簡稱M文件)。而且,由于MATLAB本身的一些特點,M文件的編制同上述幾種高級語言比較起來,有許多無法比擬的優(yōu)點。6.1 M文件所謂M文件就是由MATLAB語言編寫的可在MATLAB語言環(huán)境下運行程序源代碼文件。由

42、于商用的MATLAB軟件是用C語言編寫而成。因此,M文件的語法與C語言十分相似。對廣大參加建模競賽且學過C語言的同學來說,M文件的編寫是相當容易的。M文件可以分為腳本文件(Script)和函數(shù)文件(Function)兩種。M文件不僅可以在MATLAB的程序編輯器中編寫,也可以在其他的文本編輯器中編寫,并以“m”為擴展名加以存儲。6.1.1 腳本文件腳本類似于DOS下的批處理文件,不需要在其中輸入?yún)?shù),也不需要給出輸出變量來接受處理結(jié)果,腳本僅是若干命令或函數(shù)的集合,用于執(zhí)行特定的功能。腳本的操作對象為MATLAB工作空間內(nèi)的變量,并且在腳本執(zhí)行結(jié)束后,腳本中對變量的一切操作均會被保留。在MAT

43、LAB語言中也可以在腳本內(nèi)部定義變量,并且該變量將會自動地被加入到當前的MATLAB工作空間中,并可以為其他的腳本或函數(shù)引用,直到MATLAB被關(guān)閉或采用一定的命令將其刪除。例如:%命令窗口中定義矩陣a,ba=pascal(3)a=1 1 11 2 31 3 6b=magic(3)b= 8 1 6 3 5 7 4 9 2% 在編輯器中編寫下述命令 a=a+b b=a-b a=a-b在編輯器中編輯完上例的腳本文件后,保存至文件scriptsexample中,然后在工作窗口中調(diào)用該腳本文件, scriptsexample >> a a=8 1 63 5 74 9 2>> b

44、b= 1 1 1 1 2 3 1 3 6其中矩陣a、b均是在工作空間中已定義完畢的,腳本運行時直接使用該變量,并對其進行操作,然后在命令窗口中調(diào)用該腳本,可以看到變量a、b已經(jīng)進行了相互交換。6.1.2 函數(shù)文件MATLAB語言中,相對于腳本文件而言,函數(shù)文件是較為復(fù)雜的。函數(shù)需要給定輸入?yún)?shù),并能夠?qū)斎胱兞窟M行若干操作,實現(xiàn)特定的功能,最后給出一定的輸出結(jié)果或圖形等,其操作對象為函數(shù)的輸入變量和函數(shù)內(nèi)的局部變量等。MATLAB語言的函數(shù)文件包含如下5個部分。(1) 函數(shù)題頭:指函數(shù)的定義行,是函數(shù)語句的第一行,在該行中將定義函數(shù)名、輸入變量列表及輸出變量列表等。(2) HI行:指函數(shù)幫助文

45、本的第一行,為該函數(shù)文件的幫助主題,當使用lookfor命令時,可以查看到該行信息。(3) 幫助信息:這部分提供了函數(shù)的完整的幫助信息,包括HI之后至第一個可執(zhí)行行或空行為止的所有注釋語句,通過MATLAB語言的幫助系統(tǒng)查看函數(shù)的幫助信息時,將顯示該部分。(4) 函數(shù)體;指函數(shù)代碼段,也是函數(shù)的主體部分。(5) 注釋部分:指對函數(shù)體中各語句的解釋和說明文本,注釋語句是以%引導的。例如: functionoutput,output2=functionexample(input1,input2) % 函數(shù)題頭 %This is function to exchange two matrices %

46、 HI行 %input1,input2 are input variables % 幫助信息 %output1,output2 are output variables % 幫助信息 output1=input2; % 函數(shù)體 output2=input1; % 函數(shù)體 %The end of this example functiona,b=function-example(a,b)a= 8 1 6 3 5 7 4 9 2b= 1 1 1 1 2 3 1 3 6可以看到通過使用函數(shù)可以和上一節(jié)中的示例一樣同等矩陣a、b進行了相互交換。在該函數(shù)題頭中,“function”為MATLAB語言中函

47、數(shù)的標示符,而function-example為函數(shù)名,input1、input2為輸入變量,而output1、output2為輸出變量,實際調(diào)用過程中,可以用有意義的變量替代使用。題頭的定義是有一定的格式要求的,輸出變量是由中括號標識的,而輸入變量是由小括號標識的,各變量間用逗號間隔,應(yīng)該注意到,函數(shù)的輸入變量引用的只是該變量的值而非其他值,所以函數(shù)內(nèi)部對輸入變量的操作不會帶回到工作空間中。函數(shù)題頭下的第一行注釋語句為HI行,可以通過lookfor命令查看;函數(shù)的幫助信息可以通過help命令查看。函數(shù)體是函數(shù)的主體部分,也是實現(xiàn)編程目的的核心所在,它包括所有可執(zhí)行的一切MATLAB語言代碼。

48、在函數(shù)體中“%”后的部分為注釋語句,注釋語句主要是對程序代碼進行說明解釋,使程序易于理解,也有利于程序的維護。MATLAB語言中將一行內(nèi)百分號后所有文本均視為注釋部分,在程序的執(zhí)行過程中不被解釋,并且百分號出現(xiàn)的位置也沒有明確的規(guī)定,可以是一行的首位,這樣,整行文本均為注釋語句,也可以是在行中的某個位置,這樣其后所有文本將被視為注釋語句,這也展示了MATLAB語言在編程中的靈活性。盡管在上文中介紹了函數(shù)文件的5個組成部分,但是并不是所有的函數(shù)文件都需要全部的這5個部分,實際上,5部分中只有函數(shù)題頭是一個函數(shù)文件所必需的,而其他的4個部分均可省略。當然,如果沒有函數(shù)體則為一空函數(shù),不能產(chǎn)生任何作

49、用。在MATLAB語言中,存儲M文件時文件名應(yīng)當與文件內(nèi)主函數(shù)名相一致,這是因為在調(diào)用M文件時,系統(tǒng)查詢的相應(yīng)的文件而不是函數(shù)名,如果兩者不一致,則或者打不開目的文件,或者打開的是其他文件。鑒于這種查詢文件的方式與以往程序設(shè)計語言不同,在其他的語言系統(tǒng)中,函數(shù)的調(diào)用都是指對函數(shù)名本身的,所以,建議在存儲M文件時,應(yīng)將文件名與主函數(shù)名統(tǒng)一起來,以便于理解和使用。6.2 函數(shù)變量及變量作用域在MATLAB語言的函數(shù)中,變量主要有輸入變量、輸出變量及函數(shù)內(nèi)所使用的變量。輸入變量相當于函數(shù)入口數(shù)據(jù),是一個函數(shù)操作的主要對象。某種程度上講,函數(shù)的作用就是對輸入變量進行加工以實現(xiàn)一定的功能。如前節(jié)所述,函

50、數(shù)的輸入變量為形式參數(shù),即只傳遞變量的值而不傳遞變量的地址,函數(shù)對輸入變量的一切操作和修改如果不依靠輸出變量傳出的話,將不會影響工作空間中該變量的值。MATLAB語言提供了函數(shù)nargin和函數(shù)varargin來控制輸入變量的個數(shù),以實現(xiàn)不定個數(shù)參數(shù)輸入的操作。函數(shù)對于函數(shù)變量而言,還應(yīng)當指出的是其作用域的問題。在MATLAB語言中,函數(shù)內(nèi)定義的變量均被視為局部變量,即不加載到工作空間中,如果希望使用全局變量,則應(yīng)當使用命令global定義,而且在任何使用該全局變量的函數(shù)中都應(yīng)加以定義。在命令窗口中也不例外。例如:% 這里一個全局變量的示例function num1,num2,num3=tex

51、t (varargin)global firstlevel secondlevel %定義全局變量num1=0;num2=0;num3=0;list=zeros(nargin);for i=1:narginlist (i)=sum (varargini(:);list (i)=list (i) /length (varargini);if list (i)firstlevel num1=num1+1elseif list (i)secondlevel num2=num2+1;elsenum3=num3+1;endend % 在命令窗口中也應(yīng)定義相應(yīng)的全局變量>> global firstlevel secondlevel>> firstlevel=85;>> secondlevel=75;(程序運行結(jié)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論