MATLAB是一種高級技術計算語言和交互式環(huán)境,也是許多商業(yè)上可用的復雜數(shù)學計算工具之一。MATLAB是由MathWorks公司于1984年推出的數(shù)學軟件,其名稱是由矩陣實驗室(MATrixLABoratory)所合成,它的基本數(shù)據(jù)元素是矩陣(數(shù)組)。從名稱可知,該軟件最早的目標是提供一套非常完善的矩陣運算指令,但隨著數(shù)值運算需求的演變以及個人計算機運算速度的倍增,MATLAB已廣泛用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析、數(shù)值計算和各種動態(tài)系統(tǒng)模擬等領域。這本教材的主要目標是能夠讓那些沒有編程基礎的用戶學會MATLAB編程。然而,這本書不僅僅是MATLAB的參考手冊或MATLAB教程。這是一本介紹性的編程教科書,使用MATLAB來說明計算機科學和編程中的一般概念。讀者將打下堅實的MATLAB基礎,但是對于想提升MATLAB編程技能的有一定編程經驗的計算機程序員,可能應該參考其他相關書籍。本書非常適合作為大學編程教材,尤其適用于那些應用計算機編程的理工科學生。每一章都有明確的學習目標,通過文本、案例和活動來幫助學生實現(xiàn)這些目標。每個案例或活動相關的目標在文中都清楚地給出。每一章末尾的練習使學生能夠自我評估他們是否達到了學習目標。
吳錦順,男,福建浦城人,1969年7出生,博士,副教授,應用經濟學專業(yè)和應統(tǒng)統(tǒng)計碩士(MAS)專業(yè)碩士生導師,目前在經濟系從事教學和科研工作。
主要學習工作經歷:1987年畢業(yè)于南平高等師范?茖W校(現(xiàn)更名為武夷學院)物理系,同年入職福建省南平市浦城縣任中學教師;2010年畢業(yè)于江西財經大學,獲得法學碩士學位、2013年畢業(yè)于廈門大學理論經濟學專業(yè),獲得經濟學博士學位。同年進入華東交通大學經濟管理學院從事教學科研工作。2020年1月-2021年2月美國密歇根州立大學自然科學學院概率與統(tǒng)計系訪問學者。
目錄
1 編程環(huán)境和基本操作 1
1.1 啟動MATLAB 1
1.2 命令窗口 3
1.2.1 在命令窗口中輸入命令 3
1.2.2 數(shù)組表達 · 5
1.3 命令歷史窗口和編輯器 · 7
1.4 m文件 10
1.4.1 腳本m文件 · 10
1.4.2 函數(shù)m-文件 11
1.4.3 注解 · 13
1.5 工作空間窗口和變量編輯器 14
1.6 當前文件夾窗口和搜索路徑設置 · 19
1.7 圖窗口 23
1.8 運算符、表達式和語句 24
1.8.1 數(shù)字 · 24
1.8.2 數(shù)據(jù)類型 25
1.8.3 算術運算符 25
1.8.4 運算符的優(yōu)先級 25
1.8.5 冒號運算符 26
1.8.6 轉置算子 26
1.8.7 數(shù)組的算術運算 27
1.8.8 表達式 27
1.8.9 語句 · 28
1.8.10 語句、命令和函數(shù) 28
1.8.11 公式的向量化 29
1.9 幫助系統(tǒng) · 30
練習題 34
2 數(shù)據(jù)類型 35
2.1 計算機數(shù)字表示 · 35
2.2 數(shù)字表示系統(tǒng) 36
2.3 處理整數(shù) · 38
2.4 固定點格式 41
2.5 浮點格式 · 43
2.6 標準單精度和雙精度格式 · 45
2.7 舍入誤差 · 47
2.7.1 固定點數(shù)與浮點數(shù) 47
2.7.2 范圍和精度 48
2.8 一些函數(shù) · 50
2.8.1 class 函數(shù) 50
2.8.2 is函數(shù) 51
2.8.3 轉換函數(shù) 52
2.8.4 算術運算 53
2.8.5 關系運算 55
練習題 55
3 矩陣和數(shù)組 58
3.1 數(shù)組類型及其元素索引 58
3.1.1 矩陣和多維數(shù)組 60
3.1.2 尋址數(shù)組元素 · 60
3.1.3 創(chuàng)建數(shù)組 63
3.1.4 修改、編輯和顯示數(shù)組 69
3.2 數(shù)組運算 · 73
3.2.1 數(shù)組標準運算 · 73
3.2.2 非標準數(shù)組運算 85
3.3 數(shù)組函數(shù) · 87
3.4 在MATLAB 內置數(shù)學函數(shù)中使用數(shù)組 89
練習題 94
4 條件語句 97
4.1 IF 條件 97
4.2 IF-ELSE 條件 · 100
4.3 嵌套if-else 語句 101
4.4 switch-語句 108
4.4.1 switch_expression 是標量或字符向量· 108
4.4.2 switch 表達式可以是字符串 110
4.4.3 case 表達式可以是一個集合 111
4.4.4 switch 語句和if 指令比較 · 112
4.4.5 編寫條件語句的良好習慣 114
4.5 邏輯數(shù)據(jù)類型 116
4.5.1 表示邏輯真與假 · 117
4.5.2 關系運算符 118
4.5.3 邏輯運算符 121
練習題 129
5 循環(huán)語句和邏輯索引 131
5.1 循環(huán)的概念 · 131
5.2 for 循環(huán) 134
5.3 嵌套的for 循環(huán) · 140
5.4 while 循環(huán) 144
5.4.1 無限循環(huán)和Control-C · 148
5.4.2 用break 和continue 改變循環(huán)流 148
5.4.3 continue 語句 152
5.4.4 return 語句 · 155
5.5 邏輯索引 156
5.5.1 用向量進行邏輯索引 157
5.5.2 使用數(shù)組進行邏輯索引 · 166
練習題 169
6 MATLAB 函數(shù) 172
6.1 基本函數(shù) 172
6.1.1 基本函數(shù)和實用工具 172
6.1.2 初等函數(shù) 173
6.1.3 矩陣運算和專用函數(shù) 175
6.2 用戶定義的函數(shù) 177
6.2.1 基本規(guī)則 178
6.2.2 注釋 180
6.2.3 參數(shù) 181
6.3 更多用戶定義函數(shù)的類型 185
6.3.1 沒有輸入?yún)?shù),但具有返回參數(shù)的函數(shù) · 185
6.3.2 完成任務不返回值的函數(shù) 188
6.4 向函數(shù)傳遞參數(shù) 188
6.5 模塊化的程序 189
6.6 函數(shù)的工作空間 191
6.7 局部變量 194
6.8 持久變量 197
6.9 全局變量 199
練習題 200
7 高級函數(shù) · 202
7.1 數(shù)量可變的參數(shù)輸入與輸出 · 202
7.1.1 獲取輸入和輸出參數(shù)的數(shù)目 203
7.1.2 數(shù)量可變的參數(shù)輸入與輸出 205
7.2 MATLAB 中的函數(shù)句柄 208
7.2.1 構造函數(shù)句柄 208
7.2.2 函數(shù)句柄數(shù)組 209
7.2.3 使用函數(shù)句柄調用函數(shù) · 210
7.3 匿名函數(shù) 212
7.3.1 匿名函數(shù) · 212
7.3.2 @算子 213
7.3.3 使用匿名函數(shù) 213
7.3.4 自定義匿名函數(shù) · 214
7.4 內聯(lián)函數(shù) 217
7.5 函數(shù)的函數(shù) · 220
7.5.1 使用函數(shù)句柄將函數(shù)傳遞到函數(shù)的函數(shù)中 220
7.5.2 使用函數(shù)名將函數(shù)傳遞到函數(shù)的函數(shù)中 · 223
7.6 子函數(shù) 225
7.7 嵌套函數(shù) 225
7.7.1 調用嵌套函數(shù) 226
7.7.2 嵌套函數(shù)中的變量作用域 227
7.8 遞歸函數(shù) 229
7.8.1 遞歸的原理 229
7.8.2 遞歸函數(shù)編程 230
7.9 私有函數(shù) 232
練習題 233
8 數(shù)據(jù)結構 · 235
8.1 同構數(shù)組與異構數(shù)組 · 235
8.2 元胞數(shù)組 237
8.2.1 創(chuàng)建元胞數(shù)組 237
8.2.2 元胞數(shù)組元素和屬性的查看及顯示 239
8.2.3 在元胞數(shù)組中存儲字符串 245
8.3 結構數(shù)組 246
8.3.1 創(chuàng)建和修改結構變量 247
8.3.2 修改結構數(shù)組 247
8.3.3 從結構中訪問/提取數(shù)據(jù) 248
8.3.4 創(chuàng)建結構數(shù)組、構造函數(shù)和函數(shù) · 249
8.3.5 使用結構數(shù)組組織數(shù)據(jù) · 252
8.3.6 嵌套結構數(shù)組 253
8.3.7 從結構數(shù)組中訪問/提取數(shù)據(jù) · 253
8.3.8 對結構數(shù)組中的數(shù)據(jù)進行操作 · 255
8.3.9 與結構數(shù)組相關的函數(shù) · 260
8.4 高級數(shù)據(jù)結構 262
8.4.1 分類數(shù)組 262
8.4.2 表 264
練習題 266
9 文本處理 · 268
9.1 字符、字符向量和字符串數(shù)組 268
9.2 文本操作 272
9.2.1 ASCII 碼、雙精度碼和字符碼 272
9.2.2 字符向量操作 273
9.2.3 字符串操作 274
9.2.4 對字符串或字符向量的操作 274
9.2.5 字符串數(shù)組操作 · 282
9.3 is函數(shù)用于文本 283
9.4 文本和數(shù)字類型之間的轉換 · 286
9.5 eval 和文本宏 · 287
9.5.1 eval 和lasterr 的錯誤捕獲 · 288
9.5.2 eval 中使用try…catch · 289
9.5.3 創(chuàng)建字符數(shù)組 289
練習題 291
10 文件輸入與輸出 294
10.1 文件格式 294
10.2 保存和恢復MATLAB 工作空間 295
10.2.1 從以字符分隔的文本文件讀取數(shù)值型數(shù)據(jù) · 297
10.2.2 從以字符分隔的文本文件讀取數(shù)據(jù) · 298
10.2.3 將數(shù)字數(shù)據(jù)寫入分隔文本文件 301
10.3 從Microsoft Excel 文件加載和保存數(shù)據(jù) · 302
10.3.1 讀取數(shù)據(jù) 302
10.3.2 寫入數(shù)據(jù) 302
10.3.3 讀取部分數(shù)據(jù) 305
10.4 寫入和顯示格式化數(shù)據(jù) · 307
10.4.1 格式化數(shù)據(jù)顯示的類型 307
10.4.2 打開文本文件 310
10.4.3 寫入文本文件 313
10.4.4 關閉文本文件 313
10.4.5 用MATLAB 顯示一個文本文件 313
10.4.6 將數(shù)據(jù)從文本文件讀入變量 · 314
10.4.7 讀取文本文件函數(shù)textscan 的應用 320
10.5 二進制文件的讀取與寫入 321
10.5.1 打開二進制文件 322
10.5.2 寫入二進制文件 322
10.5.3 將數(shù)據(jù)從二進制文件讀入變量 323
10.5.4 二進制文件的追加選項 324
10.5.5 包含多種數(shù)據(jù)類型的二進制文件讀取和寫入 326
10.6 設置和查詢文件位置 330
10.7 交互式輸入和輸出 333
10.8 文件管理 335
練習題 336
11 數(shù)據(jù)可視化 · 339
11.1 二維圖形繪制 340
11.1.1 基本的二維繪圖命令 340
11.1.2 曲線的控制 · 345
11.1.3 坐標軸的控制 347
11.1.4 說明文字的加入 351
11.1.5 其他平面繪圖命令 · 353
11.2 基本的三維繪圖命令 358
11.2.1 線圖 · 358
11.2.2 網格和曲面圖 359
11.2.3 帶有特殊圖形的繪圖 364
11.2.4 view 命令 · 367
11.2.5 MATLAB 應用示例 369
11.2.6 曲面顏色的控制 374
11.3 其他特殊圖形繪制 379
11.3.1 直方圖 379
11.3.2 面積圖 382
11.3.3 扇形圖 383
11.3.4 針頭圖 385
11.3.5 階梯圖 387
11.3.6 實心圖 388
11.3.7 向量場圖 389
11.3.8 等高線圖 391
11.4 圖形對象的屬性 · 395
11.4.1 創(chuàng)建圖形對象 395
11.4.2 設置屬性值 · 397
11.4.3 查詢屬性值 · 398
11.4.4 設置默認屬性值 399
11.5 訪問對象句柄 402
11.5.1 當前圖形、坐標軸和對象 · 403
11.5.2 按屬性值搜尋對象 · 404
11.5.3 刪除對象 404
練習題 405
12 錯誤處理 410
12.1 錯誤類型 410
12.1.1 語法錯誤 410
12.1.2 運行時錯誤 · 411
12.1.3 邏輯錯誤 411
12.2 調試MATLAB 代碼 413
12.2.1 編程工具 413
12.2.2 交互方式調試MATLAB 代碼文件 414
12.2.3 使用鍵盤快捷鍵或函數(shù)進行調試 419
12.2.4 調試時檢查值 423
12.3 避免錯誤 425
12.3.1 規(guī)劃程序 425
12.3.2 經常測試 426
12.3.3 保持代碼整潔 426
12.4 使用函數(shù)存根 · 427
練習題 428
參考文獻 · 431