計(jì)算機(jī)仿真技術(shù)與CAD第1章仿真軟件-MATLAB.ppt
《計(jì)算機(jī)仿真技術(shù)與CAD第1章仿真軟件-MATLAB.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)仿真技術(shù)與CAD第1章仿真軟件-MATLAB.ppt(212頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1,本章內(nèi)容 MATLAB的基本數(shù)學(xué)函數(shù)和常用命令的使用; MATLAB的M文件的建立與使用; MATLAB的基本輸入/輸出函數(shù)及其應(yīng)用; MATLAB的外部命令調(diào)用方法; MATLAB的條件轉(zhuǎn)移語(yǔ)句、循環(huán)語(yǔ)句等常用控制語(yǔ)句的使用; MATLAB的基本繪圖、字符添加、圖形控制和圖形修飾命令; MATLAB的基本數(shù)值運(yùn)算方法; MATLAB的基本符號(hào)運(yùn)算方法; MATLAB的文件I/O ; MATLAB圖形用戶界面(GUI)的簡(jiǎn)單設(shè)計(jì); MATLAB編譯器的基本應(yīng)用方法。,第1章 仿真軟件MATLAB,2,1.1 MATLAB的功能特點(diǎn) 1.1.1 MATLAB簡(jiǎn)介,在科學(xué)研究和工程應(yīng)用中,為了
2、克服一般語(yǔ)言對(duì)大量的數(shù)學(xué)運(yùn)算,尤其當(dāng)涉及矩陣運(yùn)算時(shí),編程難、調(diào)試麻煩等困難,美國(guó)MATLAB軟件開(kāi)發(fā)公司于1967年構(gòu)思并開(kāi)發(fā)了MATLAB(MATRIX ABoratory, 即矩陣實(shí)驗(yàn)室),經(jīng)過(guò)不斷更新和擴(kuò)充,該公司于1992年推出了具有劃時(shí)代意義的MATLAB4.0版本,并于1993年推出了其微機(jī)版。 到2011年為止先后推出了MATLAB4.x、MATLAB 5.x、MATLAB 6.x和MATLAB 7.x版,使之應(yīng)用范圍越來(lái)越廣。從MATLAB 7.x版開(kāi)始,MathWorks公司每年發(fā)布兩個(gè)版本的MATLAB。,3,用MATLAB編程運(yùn)算與人進(jìn)行科學(xué)計(jì)算的思路和表達(dá)方式完全一致
3、,所以使用MATLAB進(jìn)行數(shù)學(xué)運(yùn)算就象在草稿紙上演算數(shù)學(xué)題一樣方便。 萬(wàn)能的、科學(xué)的數(shù)學(xué)運(yùn)算“演算紙” 萬(wàn)能的計(jì)算器,4,MATLAB大大降低了對(duì)使用者的數(shù)學(xué)基礎(chǔ)和計(jì)算機(jī)語(yǔ)言知識(shí)的要求,既使用戶不懂C或FORTRAN這樣的程序設(shè)計(jì)語(yǔ)言,也可使用MATLAB輕易的再現(xiàn)C或FORTRAN語(yǔ)言幾乎全部的功能 ,設(shè)計(jì)出功能強(qiáng)大、界面優(yōu)美、穩(wěn)定可靠的高質(zhì)量程序來(lái),而且編程效率和計(jì)算效率極高。,5,盡管MATLAB開(kāi)始并不是為控制理論與系統(tǒng)的設(shè)計(jì)者們編寫的,但以它“語(yǔ)言”化的數(shù)值計(jì)算、強(qiáng)大的矩陣處理及繪圖功能 、靈活的可擴(kuò)充性和產(chǎn)業(yè)化的開(kāi)發(fā)思路很快就為自動(dòng)控制界研究人員所矚目。目前,在自動(dòng)控制、圖像
4、處理、語(yǔ)言處理、信號(hào)分析、振動(dòng)理論、優(yōu)化設(shè)計(jì)、時(shí)序分析和系統(tǒng)建模等領(lǐng)域。,6,由著名專家與學(xué)者以MATLAB為基礎(chǔ)開(kāi)發(fā)的實(shí)用工具箱極大地豐富了MATLAB的內(nèi)容,較為常見(jiàn)的MATLAB工具箱主要有:,航空宇宙模塊集(Aerospace Blockset); 通信模塊集(Communications Blockset); 控制系統(tǒng)工具箱(Control Systems Toolbox); 數(shù)據(jù)獲得工具箱(Data Acquisition Toolbox); 模糊邏輯工具箱(Fuzzy Logic Toolbox); 濾波器設(shè)計(jì)工具箱(Filter Design Toolbox); 定點(diǎn)運(yùn)算模塊集
5、(Fixed-Point Blockset); 遺傳算法與直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox);,7,高階譜分析工具箱(High-Order Spectral Analysis Toolbox); 圖像處理工具箱(Image Processing Toolbox); 映射工具箱(Mapping Toolbox); 模型預(yù)測(cè)控制工具箱(Model Predictive Control Toolbox); 神經(jīng)網(wǎng)絡(luò)工具箱(Neural Network Toolbox); 優(yōu)化工具箱(Optimization Toolbox); 偏
6、微分方程工具箱(Partial Differential Equation Toolbox); 魯棒控制工具箱(Robust Control Toolbox); 信號(hào)處理工具箱(Signal Processing Toolbox); 統(tǒng)計(jì)學(xué)工具箱(Statistics Toolbox); 系統(tǒng)辨識(shí)工具箱(System Identification Toolbox); 樣條工具箱(Spline Toolbox); 小波分析工具箱(Wavelet Toolbox)。,8,模型輸入與仿真環(huán)境Simulink更使MATLAB為控制系統(tǒng)的仿真與CAD中的應(yīng)用打開(kāi)了嶄新的局面,并使得MATLAB目前已經(jīng)成
7、為國(guó)際上最流行的控制系統(tǒng)計(jì)算機(jī)輔助設(shè)計(jì)的軟件工具。 MATLAB不僅流行于控制界,在生物醫(yī)學(xué)工程、語(yǔ)言處理、圖像信號(hào)處理、雷達(dá)工程、信號(hào)分析、計(jì)算機(jī)技術(shù)等各行各業(yè)中都有極廣泛的應(yīng)用。,9,嚴(yán)格地說(shuō),MATLAB并不是一種計(jì)算機(jī)語(yǔ)言,它僅僅是一種高級(jí)的科學(xué)分析與計(jì)算軟件。因?yàn)椋盟帉懗鰜?lái)的程序并不能脫離MATLAB環(huán)境而執(zhí)行,但從其功能上講,MATLAB已經(jīng)完全具備了計(jì)算機(jī)語(yǔ)言的結(jié)構(gòu)與性能,所以我們這里將其簡(jiǎn)稱為“MATLAB語(yǔ)言”。,10,目前MATLAB的最新版本為MATLAB 7.13(R2011b),它包括MATLAB 和 Simulink 的新功能、新產(chǎn)品以及其他產(chǎn)品的更新和缺陷修復(fù)
8、程序。由于最新版的新增功能對(duì)于本書涉及的內(nèi)容沒(méi)有太大影響,再加上新版本安裝程序大、啟動(dòng)和運(yùn)行速度慢。故本書仍以目前最為流行的經(jīng)典版本MATLAB 7.5(R2007b)為基礎(chǔ)來(lái)進(jìn)行敘述,但排除了過(guò)渡性很強(qiáng)的內(nèi)容,使得本書的內(nèi)容對(duì)更高版本的環(huán)境仍可完全適用,同時(shí)也兼顧了當(dāng)前仍在較低配置計(jì)算機(jī)上使用MATLAB 6.5版本的用戶。,11,需要注意,對(duì)于使用Windows XP系統(tǒng)的用戶需要安裝MATLAB 6.5及以上的版本,使用Windows 7系統(tǒng)的用戶必須安裝MATLAB 7.6(R2008a)及以上的版本,否則不能正常使用或安裝MATLAB。,12,1.1.2 MATLAB操作界面,MAT
9、LAB啟動(dòng)后將出現(xiàn)如圖1-1所示的操作界面。,由圖1-1可知,MATLAB的操作界面由功能菜單、工具欄、工作窗口和開(kāi)始按鈕等組成。,13,1. MATLAB的工作窗口 在默認(rèn)狀態(tài)下,MATLAB的工作窗口由命令窗口(Command Window)、歷史命令(Command History)窗口、工作空間(Wotkspace)瀏覽器窗口和當(dāng)前工作目錄(Current Directory)窗口等組成。 在MATLAB命令窗口中的“”標(biāo)志為MATLAB的命令提示符,“|”標(biāo)志為輸入字符提示符。 如果用戶是第一次使用MATLAB,則建議首先在命令行中鍵入demo命令,它將啟動(dòng)MATLAB的演示程
10、序,用戶可以在這些演示程序中領(lǐng)略到MATLAB所提供的強(qiáng)大的運(yùn)算和繪圖功能。,14,2. 開(kāi)始按鈕 開(kāi)始按鈕(Start)位于MATLAB操作界面的左下角,單擊這個(gè)按鈕后,會(huì)出現(xiàn)MATLAB的操作菜單。這個(gè)菜單上半部分的選項(xiàng)包含MATLAB的各種交互操作界面,下半部分的選項(xiàng)的主要功能是窗口設(shè)置、訪問(wèn)MATLAB公司的網(wǎng)頁(yè)和查看幫助文件等。 3. 功能菜單 為了更好地利用MATLAB,在其操作界面中設(shè)置了以下多個(gè)功能菜單。,15,* File 文件操作菜單 New 新建M文件、圖形、模型和圖形用戶界面 Open 打開(kāi).m,.fig,.mat,.mdl,.cdr
11、等文件 Close Command Window 關(guān)閉命令窗口 Import Data 從其他文件導(dǎo)入數(shù)據(jù) Save Workspace As 保存工作空間數(shù)據(jù)到相應(yīng)的路徑文件中窗口 Set Path 設(shè)置工作路徑 Preferences 設(shè)置命令窗口的屬性 Page Setup 頁(yè)面設(shè)置 Print 設(shè)置打印機(jī)屬性 Print Selection 選擇打印 Exit MATLAB 退出MATLAB操作界面,16,* Edit 編輯菜單 Undo 撤消上一步操作 Redo 重新執(zhí)行上一步操作 Cu
12、t 剪切 Copy 復(fù)制 Paste 粘貼 Paste Special 粘貼特定內(nèi)容 Select All 全部選定 Delete 刪除所選對(duì)象 Find 查找所需對(duì)象 Find Files 查找所需文件 Clear Command Window 清除命令窗口的內(nèi)容 Clear Command History 清除歷史窗口的內(nèi)容 Clear Workspace 清除工作區(qū)的內(nèi)容,17,* Debug 調(diào)試菜單 Open M-Files when Debugging 調(diào)試時(shí)打開(kāi)M文件 St
13、ep 單步調(diào)試 Step In 單步調(diào)試進(jìn)入子函數(shù) Step Out 單步調(diào)試跳出子函數(shù) Continue 連續(xù)執(zhí)行到下一斷點(diǎn) Clear Breakpoints in All Files 清除所有文件中的斷點(diǎn) Stop if Errors/Warnings 出錯(cuò)或報(bào)警時(shí)停止運(yùn)行 Exit Debug Mode 退出調(diào)試模式,18,* Desktop 桌面菜單 Unlock Command Window 命令窗口設(shè)為當(dāng)前全屏活動(dòng)窗口 Desktop Layout 桌面設(shè)計(jì) Save Layout 保存桌面設(shè)計(jì) O
14、rganize Layout 組織桌面設(shè)計(jì) Command Window 顯示命令窗口 Command History 顯示歷史窗口 Current Directory 顯示當(dāng)前工作目錄 Workspace 顯示工作空間 Help 幫助窗口 Profiler 輪廓圖窗口 Toolbar 顯示/隱藏工具欄 Shortcuts Toolbar 顯示/隱藏快捷工具欄 Titles 顯示/隱藏標(biāo)題,19,* Window 窗口菜單 Close All Documents 關(guān)閉所有文檔 Com
15、mand Window 選定命令窗口為當(dāng)前活動(dòng)窗口 Command History 選定歷史窗口為當(dāng)前活動(dòng)窗口 Current Directory 選定當(dāng)前工作目錄為當(dāng)前活動(dòng)窗口 Workspace 選定工作空間為當(dāng)前活動(dòng)窗口,20,4. 工具欄 MATLAB操作界面工具欄中的工具“ ”分別用來(lái)建立M文件編輯窗口和打開(kāi)編輯文件窗口;工具“ ” 對(duì)應(yīng)的功能與Windows操作系統(tǒng)類似;工具“ ”分別用來(lái)快捷啟動(dòng)Simulink庫(kù)瀏覽窗口、GUIDE模版窗口和輪廓圖窗口;工具“ ”分別用來(lái)快捷設(shè)置當(dāng)前目錄和返回到當(dāng)前目錄的父目錄。,21,1.2.1 M
16、ATLAB語(yǔ)言的結(jié)構(gòu) MATLAB命令窗口就是 MATLAB語(yǔ)言的工作空間,因?yàn)镸ATLAB的各種功能的執(zhí)行必須在此窗口下才能實(shí)現(xiàn),在這種環(huán)境下輸入的MATLAB語(yǔ)句稱為“窗口命令”。 所謂窗口命令,就是在上述環(huán)境下輸入的MATLAB語(yǔ)句,并直接執(zhí)行它們完成相應(yīng)的運(yùn)算、繪圖等。,1.2 MATLAB的基本操作,22,其中 等號(hào)右邊的表達(dá)式可由操作符或其它字符、函數(shù)和變量名組成,它可以是MATLAB允許的數(shù)學(xué)或矩陣運(yùn)算,也可以包含MATLAB下的函數(shù)調(diào)用;等號(hào)左邊的變量名為MATLAB語(yǔ)句右邊表達(dá)式的返回值語(yǔ)句所賦值的變量的名字。 在調(diào)用函數(shù)時(shí),MATLAB允許一次返回多個(gè)結(jié)果,這時(shí)等號(hào)左邊
17、的變量名需用 括起來(lái),且各個(gè)變量名之間用逗號(hào)分隔開(kāi),如果左邊的變量名缺省時(shí)返回值自動(dòng)賦給ans。,MATLAB語(yǔ)句的一般形式為 變量名表達(dá)式,23,表1-1 MATLAB中的算術(shù)運(yùn)算符,MATLAB中使用的算術(shù)運(yùn)算符如表1-1所示。對(duì)于矩陣來(lái)說(shuō),這里左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關(guān)系。對(duì)于標(biāo)量,兩種除法運(yùn)算的結(jié)果相同,如1/4和41有相同的值0.25。常用的十進(jìn)制符號(hào)如小數(shù)點(diǎn)、負(fù)號(hào)等,在MATLAB中也可以同樣使用,表示10的冪次要用符號(hào)e或E,如:3、-99、0.0001、1.6e-20、6.2e23。,24,在MATLAB中變量名必須以字母開(kāi)頭,之后可以是任意字母、
18、數(shù)字或者下劃線(不能超過(guò)19個(gè)字符),但變量中不能含有標(biāo)點(diǎn)符號(hào)。變量名區(qū)分字母的大小寫,同一名字的大寫與小寫被視為兩個(gè)不同的變量。一般說(shuō)來(lái),在MATLAB下變量名可以為任意字符串,但MATLAB保留了一些特殊的字符串如表1-2所示。,25,表1-2 MATLAB中的特殊變量,26,MATLAB命令語(yǔ)句能即時(shí)執(zhí)行,它不是輸入完全部MATLAB命令語(yǔ)句經(jīng)過(guò)編譯、連接形成可執(zhí)行文件后才開(kāi)始執(zhí)行,而是每輸入完一條命令,MATLAB就立即對(duì)其處理,并得出中間結(jié)果,完成了MATLAB所有命令語(yǔ)句的輸入,也就完成了它的執(zhí)行,直接便可得到最終結(jié)果。從這一點(diǎn)來(lái)說(shuō),MATLAB清晰地體現(xiàn)了類似“演算紙”的功能。例
19、如 a=5; b=6; c=a*b, d=c+2,其中第3,4條命令的執(zhí)行結(jié)果分別顯示如下: c= 30 d= 32,27,MATLAB語(yǔ)句既可由分號(hào)結(jié)束,也可由逗號(hào)或換行號(hào)結(jié)束,但它們的含義是不同的。如果用分號(hào) “;”結(jié)束,則說(shuō)明除了這一條命令外還有下一條命令等待輸入,MATLAB這時(shí)將不立即顯示運(yùn)行的中間結(jié)果,而等待下一條命令的輸入,如以上前兩條命令;如果以逗號(hào) “,”或回車結(jié)束,則將把左邊返回的內(nèi)容全部顯示出來(lái),如以上后兩條命令。 當(dāng)然在任何時(shí)候也可輸入相應(yīng)的變量名來(lái)查看其內(nèi)容。如 a 結(jié)果顯示: a= 5,28,在MATLAB中,幾條語(yǔ)句也可以出現(xiàn)在同一行中,只要用分號(hào)或逗號(hào)
20、將它們分割。例如 a=5;b=6;c=a*b,d=c+2 這時(shí)可得與上面相同的結(jié)果。,29,MATLAB工作空間中的變量在退出MATLAB時(shí)會(huì)丟失,如果在退出MATLAB前想將工作空間中的變量保存到文件中,則可以調(diào)用save命令來(lái)完成,該命令的調(diào)用格式為 save 文件名 變量列表 其它選項(xiàng) 注意 這一命令中不能使用逗號(hào),不同的元素之間只能用空格來(lái)分隔。,30,例如,想把工作空間中的a,b,c變量存到mydat.mat文件中去,則可用下面的命令來(lái)實(shí)現(xiàn)。 save mydat a b c 這里將自動(dòng)地使用文件擴(kuò)展名mat。如果想將整個(gè)工作空間中所有的變量全部存入該文件,則應(yīng)采用下面的命令。 s
21、ave mydat,31,當(dāng)然這里的mydat也可省略,這時(shí)將工作空間中的所有變量自動(dòng)地存入到文件matlab.mat中了。應(yīng)該指出的是,這樣存儲(chǔ)的文件均是按照二進(jìn)制的形式進(jìn)行的,所以得出的文件往往是不可讀的,如果想按照ASCII碼的格式來(lái)存儲(chǔ)數(shù)據(jù),則可以在命令后面加上一個(gè)控制參數(shù)-ascii,該選項(xiàng)將變量以單精度的ASCII碼形式存入文件中去,如果想獲得高精度的數(shù)據(jù)。則可使用控制參數(shù):-ascii -double。,32,MATLAB提供的load命令可以從文件中把變量調(diào)出并重新裝入到MATLAB的工作空間中去,該函數(shù)的調(diào)用格式與save命令同。 當(dāng)然工作空間中變量的保存和調(diào)出也可利用菜單項(xiàng)
22、中的File|Save Workspace As 和File|Open命令來(lái)完成。,33,如果想查看目前的工作空間中都有哪些變量名,則可以使用who命令來(lái)完成。例如當(dāng)MATLAB的工作空間中有a , b , c ,d四個(gè)變量名時(shí),使用who 命令將得出如下的結(jié)果。 who,your variable are: a b c d 想進(jìn)一步了解這些變量的具體細(xì)節(jié),則可以使用whos命令來(lái)查看。,34,了解了當(dāng)前工作空間中的現(xiàn)有變量名之后,則可以使用clear命令來(lái)刪除其中一些不再使用的變量名,這樣可使得整個(gè)工作空間更簡(jiǎn)潔,節(jié)省一部分內(nèi)存,例如想刪除工作空間中的a ,b兩個(gè)變量,則可以使用下面的命
23、令 clear a b 如果想刪除整個(gè)工作空間中所有的變量,則可以使用以下命令 clear MATLAB可以使用上下光標(biāo)鍵來(lái)前后查看已經(jīng)鍵入的命令。,35,,但僅靠一條一條地輸入語(yǔ)句,MATLAB難以實(shí)現(xiàn)復(fù)雜功能,為了實(shí)現(xiàn)諸如循環(huán)、條件、分支等功能,MATLAB利用了m文件,m文件是由一系列的MATLAB語(yǔ)句組成。,36,MATLAB實(shí)際上可以認(rèn)為是一種解釋性語(yǔ)言,用戶可以在MATLAB工作環(huán)境下一條一條地鍵入命令,也可以直接鍵入用MATLAB的語(yǔ)言編寫的m文件名,或它們結(jié)合起來(lái)使用,這樣MATLAB軟件對(duì)此命令或m文件中各條命令進(jìn)行翻譯,然后在MATLAB環(huán)境下對(duì)它進(jìn)行處理,最后返回運(yùn)算
24、結(jié)果。所以說(shuō)MATLAB語(yǔ)言的結(jié)構(gòu)可用下式進(jìn)行描述 MATLAB語(yǔ)言窗口命令m文件,37,1.2.2 MATLAB的磁盤文件,由于MATLAB本身可以被認(rèn)為是一高效的語(yǔ)言,所以用它可編寫出具有特殊意義的磁盤文件來(lái),這些磁盤文件是由一系列的MATLAB語(yǔ)句組成,它既可能是一系列窗口命令語(yǔ)句,又可以是由各種控制語(yǔ)句和說(shuō)明語(yǔ)句構(gòu)成的函數(shù)文件。 由于它們都是由ASCII碼構(gòu)成的, 其擴(kuò)展名均為“.m”,故統(tǒng)稱為m文件。,38,1.文本文件 文本文件(簡(jiǎn)稱為MATLAB的程序)是一系列的MATLAB語(yǔ)句組成,它類似于DOS下的批處理文件,在MATLAB的提示符下直接鍵入文本文件名,便可自動(dòng)執(zhí)行文件
25、中的一系列命令,直至給出最終結(jié)果。 文本文件在工作空間中運(yùn)算的變量為全局變量。,39,例1-1 求函數(shù) 在x1= -2, x2=3, x3=1時(shí)的值。,解 首先在MATLAB的命令窗口中,利用菜單命令FileNewM-File,打開(kāi)M文件編輯器,然后在編輯器中根據(jù)例中所給函數(shù)編寫以下文本文件,并以ex1_1_1為文件名進(jìn)行保存(后綴.m自動(dòng)追加)。,%ex1_1_1.m x1=-2;x2=3;x3=1; y1=3*x1.2+x2+x3 y2=3*x1.2-x2-x3,,40, 當(dāng)以上文本文件ex1_1_1.m建立后,在MATLAB 命令窗口中輸入 ex1_1_1 執(zhí)行結(jié)果顯示: y1= 16
26、 y2= 8,41,由于文本文件中的變量為全局變量,故以上變量x1,x2,x3的值,也可在文本文件外先給定,此時(shí)的文本文件為 %ex1_1_2.m y1=3*x1.2+x2+x3 y2=3*x1.2-x2-x3 當(dāng)以上文本文件ex1_1_2.m建立后,利用以下命令,同樣可以得到以上結(jié)果。 x1=-2;x2=3;x3=1;ex1_1_2 以上兩種方式下,文本文件中變量的值都被保存下來(lái),這與下面的函數(shù)文件是不同的。,42,2.函數(shù)文件 函數(shù)文件的功能是建立一個(gè)函數(shù),且這個(gè)函數(shù)可以同MATLAB的庫(kù)函數(shù)一樣使用,它與文本文件不同,在一般情況下不能單獨(dú)鍵入函數(shù)文件的文件名來(lái)運(yùn)行一個(gè)
27、函數(shù)文件,它必須由其它語(yǔ)句來(lái)調(diào)用,函數(shù)文件允許有多個(gè)輸入?yún)?shù)和多個(gè)輸出參數(shù)值,其基本格式如下 function f1,f2,f3,=fun(x, y, z,) 注釋說(shuō)明語(yǔ)句 函數(shù)體語(yǔ)句 其中 x, y, z,是形式輸入?yún)?shù);而f1,f2,f3,是返回的形式輸出參數(shù)值;fun是函數(shù)名。,43,實(shí)際上,函數(shù)名一般就是這個(gè)函數(shù)文件的磁盤文件名,注釋語(yǔ)句段的內(nèi)容同樣可用help命令顯示出來(lái)。 調(diào)用一個(gè)函數(shù)文件只需直接使用與這個(gè) 函數(shù)一致的格式 y1,y2,y3,=fun(i,j,k,) 其中 i,j,k,是相應(yīng)的實(shí)際輸入?yún)?shù),而y1,y2,y3,是相應(yīng)的實(shí)際輸出參數(shù)值。,44,例1-2 求
28、函數(shù)在x1= -2, x2= 3, x3= 1時(shí)的值,解 由于函數(shù)文件的建立與文本文件完全一樣,故應(yīng)首先根據(jù)例中所給函數(shù)在MATLAB的M文件編輯器下,建立以下函數(shù)文件ex1_2.m %ex1_2.m function b1,b2=ex1_2(a1,a2,a3) b1=3*a1.2+a2+a3; b2=3*a1.2-a2-a3;,45, 當(dāng)以上函數(shù)文件ex1_2.m建立后,在MATLAB命令窗口中輸入以下命令 x1=-2;x2=3;x3=1;y1,y2=ex1_2(x1,x2,x3) 結(jié)果顯示: y1= 16 y2= 8,46,函數(shù)文件中定義的變量為局部變量,也就是說(shuō)它只在
29、函數(shù)內(nèi)有效。即在該函數(shù)返回后,這些變量會(huì)自動(dòng)在MATLAB工作空間中清除掉,這與文本文件是不同的,但可通過(guò)命令 global 變量 來(lái)定義一個(gè)全局變量。 函數(shù)文件與文本文件另一個(gè)區(qū)別在于其第一行是由function開(kāi)頭的,且有函數(shù)名和輸入形式參數(shù)與輸出形式參數(shù),若是沒(méi)有這一行的磁盤文件就是文本文件 。,47,由于m文件具有普通的文本格式,因而可以用任何編輯程序建立和編輯,但一般最常用、而且最為方便地是使用MATLAB命令窗口的File|New或File|Open菜單項(xiàng)對(duì)m文件進(jìn)行建立和編輯。,48,1.2.3 庫(kù)函數(shù)和數(shù)值顯示格式 (1)庫(kù)函數(shù) MATLAB提供了豐富的庫(kù)函數(shù),庫(kù)函數(shù)是根據(jù)系統(tǒng)
30、編制好了的,提供用戶直接使用的函數(shù),MATLAB中常用的基本數(shù)學(xué)函數(shù),如表1-3所示。 除了基本函數(shù)外,不同版本的MATLAB還增加了不同的有專門功能的庫(kù)函數(shù),也稱工具箱。例如通訊工具箱、控制系統(tǒng)工具箱和信號(hào)處理工具箱等等。 對(duì)于各種函數(shù)的功能和調(diào)用方法可使用MATLAB的聯(lián)機(jī)幫肋h(yuǎn)elp來(lái)查詢,其使用格式為 help 函數(shù)名,49,表1-3 MATLAB的基本函數(shù),50,2. 數(shù)值顯示格式,MATLAB可以使用format命令來(lái)改變顯示格式,其調(diào)用格式為 format 控制參數(shù) 其中 控制參數(shù)決定顯示格式,控制參數(shù)如表1-4表示。 除format命令外,還可由MATLAB命令窗口的Optio
31、ns|Numeric Format菜單項(xiàng)來(lái)設(shè)置顯示形式。,51,表1-4 format命令的控制參數(shù),52,1.2.4 基本輸入與輸出函數(shù),如果用戶想在計(jì)算的過(guò)程中給計(jì)算機(jī)輸入一個(gè)參數(shù),則可以使用input( )函數(shù)來(lái)進(jìn)行,該函數(shù)的調(diào)用格式為 變量名input(提示信息,選項(xiàng)) 這里提示信息可以為一個(gè)字符串顯示,它用來(lái)提示用戶輸入什么樣的數(shù)據(jù),input( )函數(shù)的返回值賦給等式左邊的變量名。,53,例如, 用戶想輸入x的值,則可以采用下面的命令來(lái)完成 x=input(Enter matrix x=); 執(zhí)行該命令時(shí)首先給出Enter matrixA=提示信息,然后等待用戶從鍵盤按MATL
32、AB格式輸入值,并把此值賦給x。 如果在input( )函數(shù)調(diào)用時(shí)采用了s選項(xiàng),則允許用戶輸入一個(gè)字符串,此時(shí)需用單引號(hào)將所輸字符串括住。,54,MATLAB提供的命令窗口輸出函數(shù)主要有disp( )函數(shù),其調(diào)用格式為 disp(變量名) 其中變量名既可以為字符串,也可以為變量矩陣。例如 s= Hello World,,s= Hello World,disp(s),Hello World,55,MATLAB提供了較實(shí)用的字符串處理及轉(zhuǎn)換的函數(shù),例如int2str( )函數(shù)就可以方便在將一個(gè)整形數(shù)據(jù)轉(zhuǎn)換成字符串形式,該函數(shù)的調(diào)用格式為 cstr=int2str(n) 其中 n為一個(gè)整數(shù),而該
33、函數(shù)將返回一個(gè)相關(guān)的字符串cstr。 例如 num的數(shù)值為num=15,而在輸出中還想給出其它說(shuō)明性附加信息,則可利用下面的語(yǔ)句 disp (The value of num is ,int2str(num), !ok),這樣可得 The value of num is 15 !ok,56,與int2str( ) 函數(shù)的功能及調(diào)用方式相似,MATLAB還提供了num2str( )函數(shù),可以將給出的實(shí)型數(shù)據(jù)轉(zhuǎn)換成字符串的表達(dá)式,最終也可以將該字符串輸出出來(lái)。例如給繪制的圖形賦以數(shù)字的標(biāo)題時(shí)可采用下面的命令 c=(70-32)/1.8; title(Room temperature is ,nu
34、m2str(c), degrees C),則會(huì)在當(dāng)前圖形上加上題頭標(biāo)注 Room temperature is 21.1111 degrees C,57,1.2.5 外部程序的調(diào)用,MATLAB允許在其命令窗口中調(diào)用可執(zhí)行文件(.exe),其調(diào)用方法是在MATLAB提示符下鍵入驚嘆號(hào)!后面直接跟該可執(zhí)行文件即可。MATLAB也允許采用這樣的方式來(lái)直接使用DOS命令,如磁盤復(fù)制命令copy可以由!copy來(lái)直接使用,而文件列表命令dir可以由!dir來(lái)調(diào)用。事實(shí)上,為了使用戶提供更大的方便,MATLAB已經(jīng)把一些常用的DOS命令做成了相應(yīng)的MATLAB命令,表1-5列出了MATLAB中提供的一
35、些文件管理命令。,58,表1-5 文件管理命令,59,1.3 MATLAB的控制語(yǔ)句,MATLAB是一個(gè)功能極強(qiáng)的高度集成化程序設(shè)計(jì)語(yǔ)言,它具備一般程序設(shè)計(jì)語(yǔ)言的基本語(yǔ)句結(jié)構(gòu),并且它的功能更強(qiáng),由它編寫出來(lái)的程序結(jié)構(gòu)簡(jiǎn)單,可讀性強(qiáng)。和其它高級(jí)語(yǔ)言一樣,MATLAB也提供了條件轉(zhuǎn)移語(yǔ)句、循環(huán)語(yǔ)句等一些常用的控制語(yǔ)句,從而使得MATLAB語(yǔ)言的編程顯得十分靈活。,60,1.3.1 循環(huán)語(yǔ)句,MATLAB中可以使用兩種循環(huán)語(yǔ)句: for語(yǔ)句和while語(yǔ)句。 1. for語(yǔ)句的基本格式為 for 循環(huán)變量表達(dá)式1:表達(dá)式3:表達(dá)式2 循環(huán)語(yǔ)句組 end,61,例 MABLAB程序
36、 ex1_3_1.m 運(yùn)行結(jié)果 mysun= 5050,62,2while語(yǔ)句的基本結(jié)構(gòu)為 while (條件式) 循環(huán)體條件組 end 其執(zhí)行方式為,若條件式中的條件成立,則執(zhí)行循環(huán)體的內(nèi)容,執(zhí)行后再判斷表達(dá)式是否仍然成立,如果表達(dá)式不成立,則跳出循環(huán),向下繼續(xù)執(zhí)行。,63,例如對(duì)于上面的例子,如果改用while循環(huán)語(yǔ)句,則可以寫出下面的程序 %ex1_3_2.m sum=0;i=1; while (i<=100) sum=sum+i;i=i+1; end MATLAB提供的循環(huán)語(yǔ)句for和while是允許多級(jí)嵌套的,而且它們之間也允許相互嵌套,這和C語(yǔ)言等高
37、級(jí)程序設(shè)計(jì)語(yǔ)言是一致的。,64,1.3.2 程序流控制語(yǔ)句,在程序設(shè)計(jì)語(yǔ)言中,經(jīng)常會(huì)遇到提前終止循環(huán)、跳出子程序、顯示執(zhí)行過(guò)程等,此時(shí)就要用到以下控制程序流命令。 1. echo命令 2. break命令 3. continue命令 4. pause命令 5. return命令,65,1.3.3 條件轉(zhuǎn)移語(yǔ)句,在程序設(shè)計(jì)中,經(jīng)常要根據(jù)一定的條件來(lái)執(zhí)行不同的命令。當(dāng)某些條件滿足時(shí),只執(zhí)行其中的某個(gè)命令或某些命令。在MATLAB中,條件轉(zhuǎn)移語(yǔ)句包括: if-else-end語(yǔ)句 switch-case-otherwise語(yǔ)句。,66,1. if-else-end語(yǔ)句的基本格式,在MAT
38、LAB中,最簡(jiǎn)單的條件結(jié)構(gòu):if-end語(yǔ)句命令格式為 if expression statements end 當(dāng)給出的條件式expression成立時(shí),則執(zhí)行該條件塊結(jié)構(gòu)中的語(yǔ)句內(nèi)容statements,執(zhí)行完之后繼續(xù)向下執(zhí)行,若條件不成立,則跳出條件塊而直接向下執(zhí)行。,67,例1-4 求滿足 的最小m值. 例 MABLAB程序 ex1_4.m 運(yùn)行結(jié)果 m= 45,68,注意, 這里使用了break命令,其作用就是中止上一級(jí)的for 語(yǔ)句循環(huán)過(guò)程,同樣while循環(huán)語(yǔ)句也在條件轉(zhuǎn)移語(yǔ)句中起著相當(dāng)重要的作用,因?yàn)樵贛ATLAB下沒(méi)有提供絕對(duì)轉(zhuǎn)移的指
39、令。,69,例1-5 如果想對(duì)一個(gè)變量x自動(dòng)賦值。當(dāng)從鍵盤輸入y或Y時(shí)(表示是),x自動(dòng)賦為1值;當(dāng)從鍵盤輸入n 或N時(shí)(表示否),x自動(dòng)賦為0值;輸入其他字符時(shí)終止程序。 例 MABLAB程序 ex1_5.m,70,MATLAB還提供了其他兩種條件結(jié)構(gòu):if-else-end 格式和if-else if-end 格式,這兩種格式的調(diào)用方法分別為 if expression statements1 else statements2 end,71,和 if expression1 statement
40、s1 else if expression2 statements2 else if expression3 statements3 end,72,2. switch-case-otherwise語(yǔ)句的基本格式 MATLAB中switch-case-otherwise語(yǔ)句的調(diào)用格式為 switch switch-expression case case-expression1 statements1; case case-expression2
41、 statements2; case case-expression3 statements3; otherwise statementsn; end,73,switch-case-otherwise語(yǔ)句中,switch-expression給出了開(kāi)關(guān)條件,當(dāng)有case-expression與之匹配時(shí),就執(zhí)行其后的語(yǔ)句,如果沒(méi)有case-expression與之匹配,就執(zhí)行otherwise后面的語(yǔ)句。在執(zhí)行過(guò)程中,只有一個(gè)case命令被執(zhí)行。當(dāng)執(zhí)行完命令后,程序就跳出分支結(jié)構(gòu),執(zhí)行end后面
42、的命令。,74,例對(duì)于以下MATLAB函數(shù)文件myfun.m。 function f=myfun(n) switch n case 0 f=1; case 1 f=2; otherwise f=8; end 在MATLAB命令窗口輸入以下命令 y=myfun(5) 結(jié)果顯示: y = 8,75,.4 MATLAB的繪圖功能,1.4.1 二維圖形 1基本形式 MATLAB最基本的繪圖函數(shù)為plot( )。 如果y是一個(gè)n 維向量,那么plot(y)繪制一個(gè)y元素和y元素排列序號(hào)1,2,, n之間關(guān)系的線性坐標(biāo)圖。如果y是一個(gè)nm維矩陣,那么p
43、lot(y)將同時(shí)繪制出每列元素與其排列序號(hào)1,2,,n之間關(guān)系的m條曲線。,76,例如 y=0 0.48 0.84 1 0.91 0.6 0.14; plot(y) 則顯示如圖1-2所示曲線。,77,如果x和y是兩個(gè)等長(zhǎng)向量,那么 plot(x,y) 將繪制一條x和y的之間關(guān)系的線性坐標(biāo)圖。例如 x=0:0.01:2*pi; y=sin(x);plot(x,y) 則顯示如圖1-3所示曲線。,78,2多重線型,在同一圖形中可以繪制多重線型,基本命令格式為 plot(x1,y1,x2,y2,,xn,yn) 以上命令可將x1對(duì)y1,x2對(duì)y2,,xn對(duì)yn的圖形繪制在一個(gè)圖形中,而且分別采用不同
44、的顏色或線型。例如以下命令可顯示如圖1-4所示曲線。 x=0:0.1:2*pi;plot(x,sin(x),x,cos(x)),79,圖1-4,80,3.圖形修飾及文本標(biāo)注,MATLAB中對(duì)于同一圖形中的多重線,不僅可分別定義其線型,而且可分別選擇其顏色,帶有選項(xiàng)的曲線繪制命令的調(diào)用格式為 plot(x1, y1,選項(xiàng),x2, y2,選項(xiàng)2,, xn, yn,選項(xiàng)n) 其中 x1,x2,,xn為x軸變量,y1, y2,, yn為y軸變量,選項(xiàng)如下表1-6所示。,81,表1-6 MATLAB的繪圖命令的各種選項(xiàng),82,上表中的線型和顏色選項(xiàng)可以同時(shí)使用,例如 x=0:0.1:2*pi; plo
45、t(x,sin(x),-g, x,cos(x),-.r),83,繪制完曲線后,MATLAB還允許用戶使用它提供的特殊繪圖函數(shù)來(lái)對(duì)屏幕上已有的圖形加注釋、題頭或坐標(biāo)網(wǎng)格。例如 x=0:0.1:2*pi;y=sin(x);plot(x, y) title(Figure Example)給出題頭 xlabel(This is x axis) x軸的標(biāo)注 ylabel(This is y axis) y軸的標(biāo)注 grid增加網(wǎng)格 legand(sin(x)) 加圖例,84,除了在標(biāo)準(zhǔn)位置書寫標(biāo)題和軸標(biāo)志以外,MATLAB還允許在圖形窗口的位置利用line( ) 和text( )命令畫直線或?qū)懽址?,?/p>
46、們的調(diào)用格式分別為 line(x, y) 和 text(x, y,chstr,選項(xiàng)) 其中 line( )函數(shù)在給定的圖形窗口上繪制一條由向量x 和y定義的折線,text( )函數(shù)是在指定的點(diǎn)(x,y)處寫一個(gè)chstr繪出的字符串,而選項(xiàng)決定x,y坐標(biāo)的單位,如選項(xiàng)為sc,則x,y表示規(guī)范化的窗口相對(duì)坐標(biāo),其范圍為0到1,即左下角坐標(biāo)為(0,0),而右上角的坐標(biāo)為(1,1)。,85,用text( )命令可以在圖形中的任意位置加上文本說(shuō)明,但是必須知道其位置坐標(biāo),而利用另一個(gè)函數(shù)gtext( ),則可以用鼠標(biāo)來(lái)對(duì)要添加的文本字符串定位。在MATLAB的工作空間中鍵入下列命令 gtext(s
47、in(x)) 那么在圖中,將會(huì)出現(xiàn)一個(gè)十字叉 ,用鼠標(biāo)拖動(dòng)它到添加文本的位置,單擊鼠標(biāo),gtext( )命令中的文本字符串sin(x)就自動(dòng)添加到指定的位置。,86,4. 圖形控制 MATLAB允許將一個(gè)圖形窗口分割成nm部分,對(duì)每一部分可以用不同的坐標(biāo)系單獨(dú)繪制圖形,窗口分割命令的調(diào)用格式為 subplot(n,m,k) 其中 n,m分別表示將這個(gè)圖形窗口分割的行列數(shù),k表示每一部分的代號(hào),例如想將窗口分割成43個(gè)部分,則右下角的代號(hào)為 12,MATLAB最多允許99的分割。,87,盡管MATLAB可以自動(dòng)根據(jù)要繪制曲線數(shù)據(jù)的范圍選擇合適的坐標(biāo)系,使得曲線能夠盡可能清晰地顯示出
48、來(lái),但是,如果覺(jué)得自動(dòng)選擇的坐標(biāo)還不合適時(shí),還可以用手動(dòng)的方式來(lái)選擇新的坐標(biāo)系,調(diào)用函數(shù)的格式為 axis(xmin, xmax, ymin, ymax) 另外,MATLAB還提供了清除圖形窗口命令clg、保持當(dāng)前窗口的圖形命令hold、放大和縮小窗口命令zoom等。,88,5. 特殊坐標(biāo)圖形 除了基本的繪圖命令plot( )外,MATLAB還允許繪制極坐標(biāo)曲線、對(duì)數(shù)坐標(biāo)曲線、條形圖和階梯圖等,其常用的函數(shù)如表1-7所示。,表1-7 特殊二維曲線繪制函數(shù),89,(1) 極坐標(biāo)曲線繪制函數(shù)的調(diào)用格式為 polar(theta,rho,選項(xiàng)) 其中,theta和rho分別為長(zhǎng)度相同的角度向量和幅
49、值向量;選項(xiàng)的內(nèi)容和plot( )函數(shù)的基本一致。,90,(2) 對(duì)數(shù)和半對(duì)數(shù)曲線繪制函數(shù)的調(diào)用格式分別為 semilogx(x,y,選項(xiàng)) 繪制橫軸為對(duì)數(shù)標(biāo)度的圖形,選項(xiàng)同plot( ) semilogy(x,y,選項(xiàng)) 繪制縱軸為對(duì)數(shù)標(biāo)度的圖形,選項(xiàng)同plot( ) loglog(x,y,選項(xiàng)) 繪制兩個(gè)軸均為對(duì)數(shù)標(biāo)度的圖形,選項(xiàng)同plot( )圖1-5 繪圖窗口的分割與不同圖形繪制 函數(shù)semilogx( )僅對(duì)橫坐標(biāo)進(jìn)行對(duì)數(shù)變換,而縱坐標(biāo)仍保持線性坐標(biāo);而semilogy( )只對(duì)縱坐標(biāo)進(jìn)行對(duì)數(shù)變換,而橫坐標(biāo)仍保持線性坐標(biāo);loglog( )則分別對(duì)橫縱坐標(biāo)都進(jìn)行
50、對(duì)數(shù)變換(最終得出全對(duì)數(shù)坐標(biāo)的曲線來(lái))。選項(xiàng)的定義與 plot( ) 函數(shù)的完全一致。,91,例1-6 利用圖形窗口分割方法將下列極坐標(biāo)方程 =cos(/3)+1/9 用四種繪圖方式畫在不同的窗口中。 解 MATLAB程序 ex1_6.m 則顯示如圖1-5所示曲線。,92,圖1-5,93,(3) 與線性坐標(biāo)向量的選取不同,在MATLAB下還給出了一個(gè)實(shí)用的函數(shù)logspace( )按對(duì)數(shù)等間距的分布來(lái)產(chǎn)生一個(gè)向量,該函數(shù)的調(diào)用格式為 x=logspace(n,m,z) 其中 10n和10m分別表示向量的起點(diǎn)和終點(diǎn),而z表示需要產(chǎn)生向量點(diǎn)個(gè)數(shù),當(dāng)這參數(shù)忽略時(shí),z將采用默認(rèn)值50。,94,6. 函
51、數(shù)圖形 MATLAB還允許調(diào)用函數(shù)fplot( )或ezplot( )來(lái)直接繪制出函數(shù)的圖形,其函數(shù)的調(diào)用格式為 fplot(f,a,b,N) 和 ezplot(f,g,a,b,N) 其中,f,g為函數(shù)名,它既可為自定義的任意M函數(shù),也可為基本數(shù)學(xué)函數(shù);a,b為繪圖區(qū)間;N為點(diǎn)數(shù),默認(rèn)時(shí)將取N=25。 例如繪制如圖1-3所示的正弦函數(shù)在一個(gè)周期內(nèi)的曲線,可采用如下命令 fplot(sin,0,2*pi),95,利用函數(shù)ezplot( )可以直接繪制隱函數(shù)曲線,隱函數(shù)即滿足f(x,y)=0方程的x,y之間的關(guān)系式。因?yàn)楹芏嚯[函數(shù)無(wú)法求出x,y之間的關(guān)系,所以無(wú)法先定義一個(gè)x向量再求出相應(yīng)的y
52、向量,從而不能采用plot( )函數(shù)來(lái)繪制其曲線。另外,即使能求出x,y之間的顯式關(guān)系,但不是單值繪制,則繪制起來(lái)也是很麻煩的。,96,例1-7 試?yán)L制隱函數(shù) 的曲線。 解 MATLAB命令如下。 ezplot(x2*sin(x+y2)+y2*exp(x+y)+5*cos(x2+y)) 執(zhí)行以上MATLAB命令,結(jié)果顯示如圖1-6所示曲線。,97,7 .利用鼠標(biāo)繪制圖形 MATLAB允許利用鼠標(biāo)來(lái)點(diǎn)選屏幕點(diǎn),命令格式為 x, y,button=ginput(n) 其中 n 為選擇點(diǎn)的數(shù)目,返回的x, y 向量分別存儲(chǔ)被點(diǎn)中的 n個(gè)點(diǎn)的坐標(biāo),而button 亦為一個(gè)n 維向量,
53、它的各個(gè)分量為鼠標(biāo)鍵的標(biāo)號(hào),如button(i)=1 ,則說(shuō)明第i 次按下的是鼠標(biāo)左鍵,而該值為 2 或3則分別對(duì)應(yīng)于中鍵和右鍵。,98,例1-8用鼠標(biāo)左鍵繪制折線,同時(shí)在鼠標(biāo)左鍵點(diǎn)中的位置輸出一個(gè)含有該位置信息的字符串,利用鼠標(biāo)中鍵或右鍵中止繪制。 解 MATLAB程序 ex1_8.m,99,1.4.2 三維圖形 1三維曲線繪制 與二維圖形相對(duì)應(yīng),MATLAB提供了plot3( )函數(shù),它允許在一個(gè)三維空間內(nèi)繪制出三維的曲線,該函數(shù)的調(diào)用格式為 plot3(x, y, z,選項(xiàng)) 其中 x, y, z為維數(shù)相同的向量,分別存儲(chǔ)曲線的三個(gè)坐標(biāo)的值,選項(xiàng)的意義同plot(
54、)函數(shù)。例利用以下命令,可得到圖1-7所示曲線。 t=0:pi/50:10*pi;plot3(sin(t),cos(t),t),100,,圖1-7,101,2三維曲面繪制 如果已知二元函數(shù),則可以繪制出該函數(shù)的三維曲面圖。在繪制三維圖之前,應(yīng)該先調(diào)用meshgrid( )函數(shù)生成網(wǎng)格矩陣數(shù)據(jù)x和y,然后可以按函數(shù)公式用點(diǎn)運(yùn)算的方式計(jì)算出z矩陣,最后就可以用mesh( )等函數(shù)進(jìn)行三維圖形繪制了。 MATLAB提供的mesh( )函數(shù)用于繪制三維表面網(wǎng)格圖,該函數(shù)的調(diào)用格式為 mesh(x,y,z,c),102,例1-9 試?yán)L制二元函數(shù)的曲線。 解 MATLAB命令如下。 x,y=meshgri
55、d(-3:0.1:3,-2:0.1:2); z=(x.2-2*x).*exp(-x.2-y.2-x.*y);mesh(x,y,z) 執(zhí)行以上命令便可得到圖1-8所示曲線。,,103,關(guān)于三維圖形的繪制,常用的其他命令有 surf(x,y,z) 繪制三維表面圖形 surfc(x,y,z) 繪制帶有等高線的三維表面圖形 surf1(x,y,z) 繪制帶有陰影的三維表面圖形 waterfall(x,y,z) 繪制瀑布形三維圖形 contour(x,y,z) 等高線圖形。,104,3三維圖形視角設(shè)置 MATLAB三維圖形顯示中提供了修改視角的功能,允許用戶從任意的角度觀察三維圖形,
56、實(shí)現(xiàn)視角轉(zhuǎn)換有兩種方法。其一是使用圖形窗口工具欄中提供的三維圖形轉(zhuǎn)換按鈕來(lái)可視地對(duì)圖形進(jìn)行旋轉(zhuǎn);其二是用view( )函數(shù)有目的地進(jìn)行旋轉(zhuǎn)。 函數(shù)view( )的調(diào)用格式為 view(,),105,例1-10 試在同一窗口中繪制二元函數(shù)曲面的三視圖和三維表面圖形。 解 MATLAB命令如下。 x,y=meshgrid(-3:0.1:3,-2:0.1:2); z=(x.2-2*x).*exp(-x.2-y.2-x.*y); subplot(2,2,1);surf(x,y,z);view(0,90); subplot(2,2,2);surf (x,y,z);view(90,0); subplot(
57、2,2,3);surf(x,y,z);view(0,0); subplot(2,2,4);surf (x,y,z); 執(zhí)行以上命令便可得到圖1-9所示曲線。,,106,107,1.4.3 圖像處理 MATLAB提供了簡(jiǎn)單的圖像輸入輸出功能,而圖像處理工具箱提供了圖像處理的強(qiáng)大功能。這里由于篇幅限制,僅介紹簡(jiǎn)單的入門知識(shí)。 1讀圖像文件 圖像文件讀取函數(shù)為imread( )其調(diào)用格式為 W=imread(文件名) 該命令將文件中的圖像讀入MATLAB工作空間,生成8位無(wú)符號(hào)整型三維數(shù)組W,其中W(:,:,1),W(:,:,2)和W(:,:,3)分別對(duì)應(yīng)于彩色圖像的紅色、綠色和藍(lán)色分量。如果
58、文件中存儲(chǔ)的是灰度圖像,則W為矩陣,存儲(chǔ)圖像的像素值。,,108,2圖像顯示 MATLAB及其圖像處理工具箱中提供了多個(gè)圖像顯示函數(shù),如image( ),imview( ),imshow( )和imtool( ),它們各有特色。 3圖像顏色空間轉(zhuǎn)換 彩色圖到灰度圖的轉(zhuǎn)換可以由函數(shù)rgb2gray( )完成。另外,不同顏色空間的圖像可以通過(guò)如rgb2hsv( ),hsv2rgb( )等進(jìn)行轉(zhuǎn)換。,,109,4圖像邊緣提取 圖像邊緣提取是圖像識(shí)別的重要基礎(chǔ)工作。利用MATLAB中的edge( )函數(shù),可以提取圖像邊緣,該函數(shù)的調(diào)用格式為 W1=edge(W,m) 其中,W灰度圖像矩陣;m為提
59、取算法,可以選擇canny,sobel等不同算法,默認(rèn)算法為Canny算法。,,110,1.5 MATLAB的數(shù)值運(yùn)算,MATLAB具有強(qiáng)大的數(shù)值能力,它不僅能對(duì)矩陣和向量進(jìn)行相應(yīng)的運(yùn)算,而且也可處理多項(xiàng)式的解、數(shù)據(jù)分析、函數(shù)的極值、線性方程組的解、函數(shù)的微積分和函數(shù)繪圖等問(wèn)題。,111,1.5.1 矩陣運(yùn)算,MATLAB的基本數(shù)據(jù)單元是不需要指定維數(shù)的復(fù)數(shù)矩陣,它提供了各種矩陣的運(yùn)算與操作,因它既可以對(duì)矩陣整體地進(jìn)行處理,也可以對(duì)矩陣的某個(gè)或某些元素進(jìn)行單獨(dú)地處理,所以在MATLAB環(huán)境下矩陣的操作同數(shù)的操作一樣簡(jiǎn)單。,112,1. 矩陣的實(shí)現(xiàn),在MATLAB語(yǔ)言中不必描述矩陣的維數(shù)和類型,
60、它們是由輸入的格式和內(nèi)容來(lái)確定的,例如當(dāng) A1 2時(shí),把A當(dāng)作一個(gè)2維向量; A5時(shí),把A當(dāng)作一個(gè)標(biāo)量; A12i時(shí),把A當(dāng)作一個(gè)復(fù)數(shù)。,113,1) 矩陣的賦值 矩陣可以用以下幾種方式進(jìn)行賦值 * 直接列出元素的形式; * 通過(guò)語(yǔ)句和函數(shù)產(chǎn)生; * 建立在文件中; * 從外部的數(shù)據(jù)文件中裝入。,114,(1) 簡(jiǎn)單矩陣的輸入 對(duì)于比較小的簡(jiǎn)單矩陣可以使用直接排列的形式輸入,把矩陣的元素直接排列到方括號(hào)中,每行內(nèi)的元素間用空格或逗號(hào)分開(kāi),行與行的內(nèi)容用分號(hào)隔開(kāi)。 在MATLAB下的輸入方式為 A=1, 2, 3; 4, 5, 6; 7, 8, 9 或 A=1 2 3; 4 5 6; 7
61、 8 9 都將得相同的結(jié)果,115,對(duì)于比較大的矩陣,可以用回車鍵代替分號(hào),對(duì)每一行的內(nèi)容分行輸入,也可利用續(xù)行符號(hào)(),把一行的內(nèi)容分兩行來(lái)輸入。 如前面的矩陣還可以等價(jià)地由下面兩種方式來(lái)輸入。 A= 1 2 3 ; 4 5 6 7 8 9 或 A=1 2 3 ;4 5 6; 7 8 9 輸入后A矩陣將一直保存在工作空間中,除非被替代和清除,在MATLAB的命令窗口中可隨時(shí)查看其內(nèi)容。,116,(2) 利用語(yǔ)句或函數(shù)產(chǎn)生矩陣 在MATLAB中,矩陣也可利用下例語(yǔ)句來(lái)產(chǎn)生 s1:s2:s3 其中,s1為起始值;s3為終止值;s2為步矩。使用這樣的命令就可以產(chǎn)生一個(gè)由s1開(kāi)始,以步距s
62、2自增,并終止于s3的行向量,如,117,y=0:pi/4:pi,y= 0.7854 1.5708 2.3562 3.1416 如果S2省略,則可以認(rèn)為自增步距為1,例如 x=1:5 結(jié)果顯示: x= 1 2 3 4 5,118,利用size( )函數(shù)可測(cè)取一個(gè)矩陣的維數(shù),該函數(shù)的調(diào)用格式為 n, m=size(A) 其中 A為要測(cè)試的矩陣名,而返回的兩個(gè)參數(shù)n和m分別為A矩陣的行數(shù)和列數(shù)。 當(dāng)要測(cè)試的變量是一個(gè)向量時(shí),當(dāng)然仍可由size( )函數(shù)來(lái)得出其大小,更簡(jiǎn)潔地,用戶可以使用length( )函數(shù)來(lái)求出,該函數(shù)的調(diào)用格式為 n=length(x) 其中 x為要測(cè)試的向量名,而返回
63、的n為向量x的元素個(gè)數(shù)。,119,如果對(duì)一個(gè)矩陣A用length(A)函數(shù)測(cè)試,則返回該矩陣行列的最大值,即該函數(shù)等效于max(size(A))。,120,2) 矩陣的元素 MATLAB的矩陣元素可用任何表達(dá)式來(lái)描述,它既可以是實(shí)數(shù),也可以是復(fù)數(shù),例如 B= -1/3 1.3; sqrt(3) (1+2+3)*i,B -0.3333 1.3000 1.7321 0+6.0000i MATLAB允許把矩陣作為元素來(lái)建立新的矩陣,例如,利用A矩陣通過(guò)下面的語(yǔ)句 C= A;10,11,12,121,MATLAB還允許對(duì)一個(gè)矩陣的單個(gè)元素進(jìn)行賦值和操作,例如如果想將A矩陣的第2行第3列的元素賦
64、為100,則可通過(guò)下面的語(yǔ)句來(lái)完成 A(2,3)=100,A= 12 3 4 5 100 78 9 這時(shí)將只改變此元素的值,而不影響其它元素的值。,122,如果給出的行數(shù)或列數(shù)大于原來(lái)矩陣的范圍,則MATLAB將自動(dòng)擴(kuò)展原來(lái)的矩陣,并將擴(kuò)展后未賦值的矩陣元素置為0。例如如果想把矩陣A的第4 行第5列元素的值定義為8,就可以通過(guò)下面語(yǔ)句來(lái)完成。 A(4,5)=8,A= 1 2 3 0 0 4 5 100 0 0 7 8 9 0 0 0 0 0 0 8,123,3) 特殊矩陣的實(shí)現(xiàn) 在MATLAB中特殊矩陣可以利用函數(shù)來(lái)建立。 (1) 單位矩陣函數(shù)eye( ) 基本格式 Aeye(n)
65、 產(chǎn)生一個(gè)n階的單位矩陣A 或 Aeye(size(B)) 產(chǎn)生與B矩陣同階的單位矩陣A,124,(2)零矩陣函數(shù)zeros( ) (3) 1矩陣函數(shù)ones( ) (4) 隨機(jī)元素矩陣函數(shù)rand( ) (5)對(duì)角矩陣函數(shù)diag( ) (6) 伴隨矩陣函數(shù)compan( ) (7) 上三角矩陣函數(shù)triu( )和下三角矩 陣函數(shù)tril( ),125,2. 矩陣的基本運(yùn)算,矩陣運(yùn)算是MATLAB的基礎(chǔ),MATLAB的矩陣運(yùn)算功能十分強(qiáng)大,并且運(yùn)算的形式和一般的數(shù)學(xué)表示十分相似。 1)矩陣的轉(zhuǎn)置 矩陣轉(zhuǎn)置的運(yùn)算符為“ ”。例如 A=1 2 3;4 5 6;B= A,A= 1
66、 4 2 5 3 6,126,2)矩陣的加和減,矩陣的加減法的運(yùn)算符為“”和“”。矩陣只有同階方可進(jìn)行加減運(yùn)算,標(biāo)量可以和矩陣進(jìn)行加減運(yùn)算但應(yīng)對(duì)矩陣的每個(gè)元素施加運(yùn)算。例如 A=1 2 3;4 5 6; B=A+1,B= 2 3 4 5 6 7,127,3)矩陣的乘法,矩陣的乘法運(yùn)算符為“*”。 當(dāng)兩個(gè)矩陣中前一矩陣的列數(shù)和后一矩陣的行數(shù)相同時(shí),可以進(jìn)行乘法進(jìn)行運(yùn)算,這與數(shù)學(xué)上的形式是一致的。例 CA*B; 在MATLAB中還可進(jìn)行矩陣和標(biāo)量相乘,其結(jié)果為標(biāo)量與矩陣中的每個(gè)元素分別相乘。,128,4)矩陣的除法,矩陣的除法有兩種運(yùn)算符“”和“/”,分別表示左除和右除。 一般地講,x= AB是A*x=B的解,x=B/A是x*A=B的解,通常ABB/A, 而AB=inv(A)*B, B/A= B*inv(A)。,129,5)矩陣的乘方,矩陣的乘方運(yùn)算符為“”。 一個(gè)方陣的乘方運(yùn)算可以用AP來(lái)表示 。P為正整數(shù),則A的P次冪即為A矩陣自乘P次。如果P為負(fù)整數(shù),則可以將A自乘 P次,然后對(duì)結(jié)果進(jìn)行求逆運(yùn)算,就可得出該乘方結(jié)果。如果P是一個(gè)分?jǐn)?shù),例如Pmn,其中n和m均為整數(shù),則首先應(yīng)該將
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北師大版數(shù)學(xué)二年級(jí)下冊(cè)《買洗衣機(jī)》課件PPT版
- 小學(xué)生文明禮儀班會(huì)課件
- 質(zhì)量管理軟件質(zhì)量管理與質(zhì)量保證
- 勞務(wù)派遣與專業(yè)外包用工風(fēng)險(xiǎn)防范
- 動(dòng)物個(gè)體發(fā)育與演化課件
- 課外練習(xí)2_長(zhǎng)方形和正方形的面積
- 合同法基本原理( 44頁(yè))
- 醫(yī)師電子化注冊(cè)系統(tǒng)培訓(xùn)(2018醫(yī)師個(gè)人版)(PPT40頁(yè))
- 百度汽車營(yíng)銷
- 斗破蒼穹人物介紹PPT課件
- 養(yǎng)老地產(chǎn)解析
- 字詞句運(yùn)用 (3)(精品)
- 大型財(cái)稅講座產(chǎn)說(shuō)會(huì)流程
- 涂料銷售渠道開(kāi)發(fā)
- 房地產(chǎn)業(yè)務(wù)流程管理_