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