本書展示使用MATLAB解決各種典型問題的方法和技巧,不僅指導(dǎo)讀者編寫清晰、高效、良好的MATLAB程序,還介紹了大量MATLAB的實用函數(shù)。全書共9章,前7章涵蓋MATLAB的基本概念和實現(xiàn),后2章引入更多的高級應(yīng)用。本書內(nèi)容全面,通俗易懂,適合作為工程和計算機專業(yè)教材,同時也可作為廣大科技工作者掌握MATLAB計算工具的自學(xué)用書。
前 言Essentials of MATLAB Programming, Third EditionMATLAB(MATrix LABoratory的簡稱,即矩陣實驗室)是由MathWorks公司開發(fā)的專業(yè)工程與科學(xué)計算軟件,其最初的設(shè)計目的是進行矩陣的數(shù)學(xué)運算。然而,近年來,MATLAB逐漸發(fā)展成為一個能夠從根本上解決各種重要技術(shù)問題并且極其靈活的計算系統(tǒng)。
MATLAB軟件執(zhí)行MATLAB語言編寫的程序,同時還提供十分豐富的預(yù)定義函數(shù)庫,簡化編程過程,提高編程效率。與其他編程語言(如Fortran或C)相比,豐富的MATLAB庫函數(shù)能夠幫助用戶更容易地解決工程技術(shù)問題。本書將基于MATLAB R2014b版本介紹MATLAB語言的特點,并展示如何使用它來解決經(jīng)典的技術(shù)問題。
通過對MATLAB編程語言的學(xué)習(xí),學(xué)生將學(xué)會如何使用MATLAB編寫整潔、高效、文檔化的程序。另外,本書無意在此對所有的MATLAB函數(shù)逐一介紹,僅講解如何使用MATLAB編程,以及如何利用聯(lián)機幫助工具查找需要的MATLAB函數(shù)。
本書適合計算機科學(xué)與技術(shù)專業(yè)的大學(xué)一年級學(xué)生使用,可作為“編程與問題求解導(dǎo)論”課程的教材。具體課時可安排9周,每周3小時。
第3版修訂本書適用于MATLAB R2014b及更高版本。MATLAB R2014b是MATLAB啟用新的H2圖形系統(tǒng)后的首個版本,其中H2圖形系統(tǒng)旨在實現(xiàn)更高質(zhì)量的圖形輸出效果。目前,圖形組件成為帶有句柄的MATLAB對象,其屬性可通過MATLAB對象標記進行訪問。下面將為大家簡單介紹此版本的修訂之處。
自上一版以來,面向?qū)ο笏枷牒兔嫦驅(qū)ο缶幊痰腗ATLAB實現(xiàn)越發(fā)成熟,在此將進行詳細介紹。此外,仍對舊關(guān)鍵字–值方法提供支持。
前面章節(jié)大幅縮短,以便更合理地安排內(nèi)容讓大家理解和掌握重要部分。現(xiàn)將分支部分和循環(huán)部分分別獨立成章,并將函數(shù)部分分為兩章進行討論。
第3章著重介紹二維繪圖,并整理所有繪圖相關(guān)信息以確保大家理解。
第8章是對三維繪圖的拓展,該章有助于加強并深化學(xué)生對三維繪圖的學(xué)習(xí)和理解。
第9章介紹了最新的H2圖形的特征。
本書特色本書的特色在于不斷強調(diào)如何編寫可靠的MATLAB程序。無論是對于初學(xué)者,還是對于已有基礎(chǔ)的相關(guān)從業(yè)人員,本書都能給予一定的幫助。下面詳細介紹本書特色。
1.注重自頂向下的設(shè)計方法本書第4章介紹了一種自頂向下的設(shè)計方法,并將其運用于書中的其余部分。首先,此方法鼓勵大家在開始編程之前認真考慮好如何設(shè)計程序,即重點需要弄清楚所要解決問題的明確定義、所需的輸入和輸出等。其次,一旦清楚問題定義,下面就是考慮如何逐步將任務(wù)成功地分解為較小的子任務(wù),并將各個子任務(wù)作為單獨的子程序或函數(shù)來實現(xiàn)。最后,要理解在編程過程中測試的重要性,不管是組件程序的單元測試,還是最終程序的詳細測試,都需要認真進行。
本書所講授的通用設(shè)計過程可概括如下。
(1)清楚地陳述所要解決的問題。
(2)定義程序所需的輸入和產(chǎn)生的輸出。
(3)描述程序中的實現(xiàn)算法。涉及自頂向下設(shè)計和任務(wù)逐步分解,需用偽代碼或流程圖。
(4)將算法轉(zhuǎn)換成MATLAB語句。
(5)測試MATLAB程序,包括對特定函數(shù)的單元測試,以及不同數(shù)據(jù)集下最終程序的詳細測試。
2.注重函數(shù)本書重視函數(shù)的使用,其可在邏輯上將任務(wù)分解為更小的子任務(wù),并具有數(shù)據(jù)隱藏的優(yōu)點。同時,還強調(diào)了函數(shù)在組合到最終程序之前單獨測試的重要性。此外,本書介紹了使用函數(shù)所犯的常見錯誤,以及如何避免這些錯誤。
3.注重MATLAB工具本書介紹了如何正確使用MATLAB的內(nèi)置工具,使編程和調(diào)試更加容易。所涵蓋的工具包括編輯器/調(diào)試器、工作空間瀏覽器、幫助瀏覽器和GUI設(shè)計工具。
4.“良好編程習(xí)慣”框這些框用來突出良好的編程實踐。此外,在章節(jié)的最后會給大家總結(jié)良好編程習(xí)慣。下面是一個“良好編程習(xí)慣”框的示例。
良好編程習(xí)慣始終將if結(jié)構(gòu)的主體縮進兩個或更多空格,以提高代碼的可讀性。
5.“編程誤區(qū)”框這些框用來突出常見的錯誤,以便避免它們。下面是一個“編程誤區(qū)”框的示例。
編程誤區(qū)確保在前63個字符中變量名是唯一的。否則,MATLAB將無法分辨出它們之間的區(qū)別。
MATLAB編程的優(yōu)勢與傳統(tǒng)的計算機編程語言相比,MATLAB在解決工程技術(shù)問題方面具有諸多優(yōu)勢,下面重點介紹幾個。
1.易用性MATLAB是一種解釋型語言,如同各種版本的Basic語言。與Basic一樣,它也非常容易使用。該程序可作為便簽式計算器來求解在命令行輸入的表達式的值,或者用于執(zhí)行預(yù)先編寫好的大型程序。在內(nèi)置集成開發(fā)環(huán)境中,可以方便地編寫和修改程序,并使用MATLAB調(diào)試器來調(diào)試程序。正是基于這種語言的易用性,對于快速建立新程序的原型,它是一個理想的工具。
MATLAB還提供了許多程序開發(fā)工具,包括集成的編輯器/調(diào)試器、在線文檔和手冊、工作空間瀏覽器以及大量示例。
2.平臺獨立性MATLAB支持多種操作系統(tǒng),并提供了大量的平臺獨立措施。在撰寫本書時,Windows 7/8/10、Linux、Unix、Mac OS X 10.10和10.11等系統(tǒng)都支持MATLAB。對于MATLAB而言,在一個平臺上編寫的程序在其他平臺上一樣可以正常運行,在一個平臺上編寫的數(shù)據(jù)文件在其
斯蒂芬 J.查普曼(Stephen J. Chapman)擁有路易斯安那州立大學(xué)電氣工程學(xué)士學(xué)位、佛羅里達中央大學(xué)電氣工程碩士學(xué)位,并在萊斯大學(xué)進一步深造。他曾供職于美國海軍、休斯敦大學(xué)、MIT林肯實驗室,目前在墨爾本負責(zé)澳大利亞BAE系統(tǒng)建模和運營分析,開發(fā)了一個軍艦自我防御的模型,這個模型包含超過40萬行的MATLAB代碼且運行了十余年。他是電氣和電子工程師學(xué)會的高級會員,也是澳大利亞工程師學(xué)會的會員。
目 錄
Essentials of MATLAB Programming, Third Edition
出版者的話
譯者序
前言
第1章 MATLAB簡介 1
1.1 MATLAB優(yōu)勢所在 1
1.2 MATLAB不足之處 3
1.3 MATLAB工作環(huán)境 3
1.3.1 操作界面 3
1.3.2 命令窗口 4
1.3.3 工具欄 5
1.3.4 命令歷史窗口 6
1.3.5 文檔窗口 6
1.3.6 圖形窗口 8
1.3.7 窗口?颗c取消? 9
1.3.8 工作空間 9
1.3.9 工作空間瀏覽器 10
1.3.10 當(dāng)前文件夾瀏覽器 11
1.3.11 獲取幫助 11
1.3.12 幾個重要命令 13
1.3.13 MATLAB搜索路徑 14
1.4 MATLAB應(yīng)用示例——計算器 15
1.5 本章小結(jié) 17
1.6 本章習(xí)題 17
第2章 MATLAB基礎(chǔ)知識 19
2.1 變量和數(shù)組 19
2.2 創(chuàng)建和初始化變量 21
2.2.1 在賦值語句中初始化變量 22
2.2.2 使用快捷表達式初始化 23
2.2.3 使用內(nèi)置函數(shù)初始化 24
2.2.4 使用鍵盤輸入初始化變量 25
2.3 多維數(shù)組 26
2.3.1 在內(nèi)存中存儲多維數(shù)組 27
2.3.2 用一維方式訪問多維數(shù)組 28
2.4 子數(shù)組 28
2.4.1 函數(shù)end 28
2.4.2 在賦值語句左側(cè)使用子數(shù)組 29
2.4.3 將標量賦值給子數(shù)組 30
2.5 特殊值 30
2.6 顯示輸出數(shù)據(jù) 32
2.6.1 更改默認格式 32
2.6.2 函數(shù)disp 33
2.6.3 使用函數(shù)fprintf標準化輸出 33
2.7 數(shù)據(jù)文件 34
2.8 標量和數(shù)組運算 36
2.8.1 標量運算 36
2.8.2 數(shù)組和矩陣運算 37
2.9 運算級別 39
2.10 MATLAB內(nèi)置函數(shù) 41
2.10.1 任意返回值 41
2.10.2 使用數(shù)組作為MATLAB函數(shù)輸入 42
2.10.3 常見MATLAB函數(shù) 42
2.11 繪圖簡介 43
2.11.1 使用簡單xy繪圖 43
2.11.2 打印繪圖 44
2.11.3 將繪圖導(dǎo)出為圖像文件 44
2.11.4 多個繪圖 46
2.11.5 線條顏色、線條類型、標記類型和圖例 46
2.11.6 對數(shù)刻度 49
2.12 示例 50
2.13 調(diào)試MATLAB程序 54
2.14 本章小結(jié) 56
2.14.1 良好編程習(xí)慣總結(jié) 56
2.14.2 MATLAB總結(jié) 57
2.15 本章習(xí)題 59
第3章 二維繪圖 65
3.1 二維繪圖的其他功能 65
3.1.1 對數(shù)刻度 65
3.1.2 控制x軸和y軸范圍 68
3.1.3 同一軸上繪制多個繪圖 70
3.1.4 創(chuàng)建多個圖形 70
3.1.5 子圖 72
3.1.6 控制繪圖上的點間距 72
3.1.7 繪制線的高級控制 75
3.1.8 文本字符串的高級控制 75
3.2 極坐標繪圖 78
3.3 注釋與保存繪圖 79
3.4 二維繪圖的其他類型 82
3.5 二維數(shù)組繪圖 85
3.6 本章小結(jié) 87
3.6.1 良好編程習(xí)慣總結(jié) 87
3.6.2 MATLAB總結(jié) 87
3.7 本章習(xí)題 88
第4章 分支結(jié)構(gòu)與程序設(shè)計 91
4.1 自頂向下設(shè)計技術(shù)簡介 91
4.2 偽代碼的使用 93
4.3 邏輯數(shù)據(jù)類型 94
4.3.1 關(guān)系運算符與邏輯運算符 94
4.3.2 關(guān)系運算符 94
4.3.3 運算符==和~=的注意事項 95
4.3.4 邏輯運算符 96
4.3.5 邏輯函數(shù) 99
4.4 分支 100
4.4.1 if結(jié)構(gòu) 100
4.4.2 if結(jié)構(gòu)示例 102
4.4.3 if結(jié)構(gòu)的注意事項 106
4.4.4 switch結(jié)構(gòu) 108
4.4.5 try/catch結(jié)構(gòu) 109
4.5 調(diào)試MATLAB程序的更多信息 115
4.6 本章小結(jié) 120
4.6.1 良好編程習(xí)慣總結(jié) 120
4.6.2 MATLAB總結(jié) 121
4.7 本章習(xí)題 121
第5章 循環(huán)結(jié)構(gòu)和向量化 125
5.1 while循環(huán) 125
5.2 for循環(huán) 129
5.2.1 操作細節(jié) 134
5.2.2 向量化:更快的循環(huán)選擇 136
5.2.3 MATLAB即時編譯器 136
5.2.4 break語句和continue語句 138
5.2.5 嵌套循環(huán) 140
5.3 邏輯數(shù)組和向量化 141
5.4 MATLAB探查器 143
5.5 其他示例 145
5.6 函數(shù)textread 155
5.7 本章小結(jié) 157
5.7.1 良好編程習(xí)慣總結(jié) 157
5.7.2 MATLAB總結(jié) 157
5.8 本章習(xí)題 158
第6章 用戶自定義函數(shù)基本特性 163
6.1 MATLAB函數(shù)簡介 164
6.2 MATLAB變量傳遞:值傳遞機制 166
6.3 可選參數(shù) 175
6.4 使用全局內(nèi)存共享數(shù)據(jù) 178
6.5 函數(shù)調(diào)用之間的數(shù)據(jù)存儲 183
6.6 MATLAB內(nèi)置函數(shù):排序函數(shù) 187
6.7 MATLAB內(nèi)置函數(shù):隨機數(shù)生成函數(shù) 189
6.8 本章小結(jié) 189
6.8.1 良好編程習(xí)慣總結(jié) 189
6.8.2 MATLAB總結(jié) 190
6.9 本章習(xí)題 190
第7章 用戶自定義函數(shù)高級特性 195
7.1 函數(shù)的函數(shù) 195
7.2 本地函數(shù)、私有函數(shù)和嵌套函數(shù) 198
7.2.1 本地函數(shù) 198
7.2.2 私有函數(shù) 199
7.2.3 嵌套函數(shù) 199
7.2.4 函數(shù)執(zhí)行順序 201
7.3 函數(shù)句柄 201
7.3.1 創(chuàng)建和使用函數(shù)句柄 202
7.3.2 函數(shù)句柄的優(yōu)點 204
7.3.3 函數(shù)句柄和嵌套函數(shù) 204
7.3.4 應(yīng)用示例:常微分方程的求解 206
7.4 匿名函數(shù) 210
7.5 遞歸函數(shù) 211
7.6 繪圖函數(shù) 212
7.7 直方圖 214
7.8 本章小結(jié) 218
7.8.1 良好編程習(xí)慣總結(jié) 218
7.8.2 MATLAB總結(jié) 218
7.9 本章習(xí)題 219
第8章 其他數(shù)據(jù)類型和繪圖類型 224
8.1 復(fù)數(shù) 224
8.1.1 復(fù)數(shù)變量 225
8.1.2 復(fù)數(shù)關(guān)系運算 225
8.1.3 復(fù)數(shù)函數(shù) 226
8.1.4 繪制復(fù)數(shù) 229
8.2 字符串和字符串函數(shù) 231
8.2.1 字符串轉(zhuǎn)換函數(shù) 232