內容簡介
《MATLAB寶典》的前兩版由於講解細緻、內容全面而深受廣大讀者的喜愛,上市以來長期占據各大MATLAB類圖書排行榜的前列。根據廣大讀者的反饋,作者對第2版進行了調整,並增加了這幾年工作中新的MATLAB套用體會。
本書由淺入深、循序漸進地介紹了MATLAB的知識體系及操作方法。全書共分為7個部分23章,另外在光碟上附贈2個章節。其中主要介紹了如何使用MATLAB進行數據分析、數據可視化的方法、MATLAB編程、圖形用戶界面、MATLAB仿真,以及檔案輸入/輸出、編譯器和應用程式接口等高級技術。本書最大的特色在於每一節的例子都經過精挑細選,具有很強的針對性,力求讓讀者通過親自動手做而掌握基本參數及製作技巧,學習儘可能多的知識。
本書適用於初、中級MATLAB用戶,同時也適合使用MATLAB的本科生、研究生和教師以及廣大科研工作人員作為參考用書。
目錄
第1部分 MATLAB基礎知識 1
第1章 MATLAB概述 2
1.1 MATLAB 7簡介 2
1.2 MATLAB 7的安裝 2
1.3 MATLAB 7的工作環境 5
1.3.1 操作界面簡介 6
1.3.2 運行命令視窗 6
1.3.3 命令視窗的顯示方式 7
1.3.4 數值結果的顯示方式 9
1.3.5 命令視窗的標點符號 10
1.3.6 輸入變數 12
1.3.7 處理複數 14
1.3.8 命令視窗的控制命令 15
1.3.9 使用歷史視窗 16
1.3.10 使用實錄命令 20
1.3.11 當前目錄瀏覽器和路徑管理 21
1.3.12 設定當前目錄 22
1.3.13 MATLAB的搜尋路徑 23
1.3.14 工作空間瀏覽器和數組編輯器 25
1.3.15 變數的編輯命令 26
1.3.16 數組編輯器 27
1.3.17 存取數據檔案 28
1.4 MATLAB 7的幫助系統 30
1.4.1 純文本幫助 30
1.4.2 演示(demo)幫助 31
1.4.3 幫助導航/瀏覽器 33
1.4.4 Contents幫助檔案目錄視窗 34
1.4.5 Index幫助檔案索引視窗 35
1.4.6 Search幫助檔案搜尋視窗 35
1.5 小結 36
第2章 數組 37
2.1 創建數值數組 37
2.1.1 一維數組的創建方法 37
2.1.2 二維數組的創建方法 38
2.1.3 使用下標創建三維數組 39
2.1.4 使用低維數組創建三維數組 40
2.1.5 使用創建函式創建三維數組 41
2.1.6 創建低維標準數組 43
2.1.7 創建高維標準數組 44
2.2 運算元值數組 45
2.2.1 選取低維數組的對角元素 45
2.2.2 低維數組的形式轉換 46
2.2.3 選取三角矩陣 47
2.2.4 Kronecker乘法 49
2.2.5 高維數組的對稱交換 50
2.2.6 高維數組的維序號移動 51
2.2.7 高維數組的廣義共軛轉置 52
2.2.8 高維數組的降維操作 53
2.3 小結 54
第3章 矩陣和架構 55
3.1 稀疏矩陣 55
3.1.1 稀疏矩陣的存儲方式 55
3.1.2 創建稀疏矩陣——使用sparse命令 56
3.1.3 創建稀疏矩陣——使用spdiags命令 57
3.1.4 查看稀疏矩陣的信息 58
3.1.5 稀疏矩陣的圖形化信息 59
3.2 字元串數組 60
3.2.1 創建字元串數組——直接輸入法 61
3.2.2 創建字元串數組——使用ASCII碼 61
3.2.3 創建字元串數組——使用函式 62
3.2.4 處理字元串數組的空格 63
3.2.5 讀取字元串數組的信息 64
3.3 構架數組 65
3.3.1 創建單構架數組——使用直接法 66
3.3.2 創建二維構架數組 67
3.3.3 創建三維構架數組 68
3.3.4 使用命令創建構架數組 69
3.3.5 訪問構架數組的數據 69
3.3.6 設定構架數組的域屬性 72
3.4 小結 74
第4章 矩陣分析 75
4.1 矩陣計算 75
4.1.1 進行範數分析——使用norm函式 75
4.1.2 進行範數分析——使用normest函式 78
4.1.3 條件數分析 80
4.1.4 數值矩陣的行列式 81
4.1.5 符號矩陣的行列式 82
4.1.6 矩陣的化零矩陣 83
4.2 線性方程組 84
4.2.1 非奇異線性方程組 84
4.2.2 奇異線性方程組 85
4.2.3 欠定線性方程組 87
4.2.4 超定線性方程組 88
4.3 矩陣分解 89
4.3.1 Cholesky分解 89
4.3.2 使用Cholesky分解求解方程組 91
4.3.3 不完全Cholesky分解 92
4.3.4 LU分解 93
4.3.5 不完全LU分解 96
4.3.6 QR分解 100
4.3.7 操作QR分解結果 101
4.3.8 奇異值分解 105
4.4 特徵值分析 107
4.4.1 特徵值和特徵向量 107
4.4.2 稀疏矩陣的特徵值和特徵向量 110
4.4.3 特徵值問題的條件數 111
4.4.4 特徵值的複數問題 113
4.5 小結 114
第2部分 數據分析 115
第5章 函式分析和數值運算 116
5.1 函式的零點 116
5.1.1 一元函式的零點 116
5.1.2 多元函式的零點 118
5.2 數值積分 120
5.2.1 一元函式的數值積分 120
5.2.2 使用Simulink求解數值積分 122
5.2.3 求解瑕積分 123
5.2.4 矩形區域的多重數值積分 124
5.2.5 變數區域的多重數值積分 125
5.3 機率論和數理統計 129
5.3.1 雙變數的機率分布 129
5.3.2 不同機率分布 131
5.3.3 數據分布分析 132
5.3.4 假設檢驗 133
5.4 小結 138
第6章 高級數值運算 139
6.1 插值 139
6.1.1 一維插值 139
6.1.2 人口數量預測——一維插值實例 140
6.1.3 二維插值 143
6.1.4 繪製二元函式圖形——二維插值實例 144
6.1.5 樣條插值 146
6.1.6 牛頓插值 147
6.1.7 多項式插值——牛頓插值實例 148
6.1.8 Chebyshev多項式插值 150
6.1.9 多項式插值——Chebyshev多項式插值實例 150
6.2 曲線擬合 152
6.2.1 多項式擬合 153
6.2.2 加權最小方差擬合 154
6.2.3 數據擬合——適用加權最小方差WLS方法 154
6.3 曲線擬合圖形界面 158
6.3.1 曲線擬合 158
6.3.2 繪製擬合殘差圖形 160
6.3.3 進行數據預測 161
6.4 傅立葉分析 163
6.4.1 離散傅立葉變換 163
6.4.2 FFT和DFT 165
6.4.3 DFT的物理含義 166
6.4.4 使用DFS進行插值 168
6.5 小結 171
第7章 最佳化 172
7.1 常見最佳化問題 172
7.1.1 無約束非線性最佳化 172
7.1.2 求解二元函式的最小值——無約束非線性最佳化 173
7.1.3 非線性最小方差 177
7.1.4 計算函式的非線性最小方差 177
7.1.5 有約束的非線性最佳化 179
7.1.6 計算多元函式的極值——有約束的非線性最佳化 180
7.1.7 最小最大值的最佳化問題 183
7.1.8 最佳化對比 186
7.1.9 線性規劃 187
7.1.10 二次規劃 190
7.1.11 使用遺傳算法求解二次規劃 191
7.2 使用遺傳算法求解最佳化 193
7.2.1 分析目標函式 194
7.2.2 最佳化求解 195
7.2.3 添加結果的可視性 197
7.2.4 設定算法的屬性 198
7.2.5 設定“種群”屬性 198
7.2.6 設定“中止”屬性 200
7.3 最佳化“Banana”函式——最佳化方法對比 201
7.3.1 分析目標函式 201
7.3.2 BFGS最佳化法求解 203
7.3.3 DFP最佳化法求解 204
7.3.4 “無約束非線性”最佳化求解 206
7.3.5 “最小方差”最佳化求解 207
7.4 繪製帳篷——複雜的二次規劃 208
7.4.1 設定約束條件 208
7.4.2 定義目標函式 210
7.4.3 進行最佳化求解 211
7.4.4 繪製最佳化求解的結果 213
7.5 小結 214
第8章 常微分方程 215
8.1 顯性常微分方程 215
8.1.1 剛性和非剛性方程組 216
8.1.2 設定允許誤差屬性 219
8.1.3 設定輸出參數屬性 221
8.1.4 設定解法器其他屬性 225
8.2 加權常微分方程 227
8.3 延遲微分方程 230
8.4 常微分方程的邊界問題 232
8.4.1 MATLAB求解邊界問題——bvp4c命令 232
8.4.2 求解帶邊界的常微分方程 233
8.5 小結 236
第9章 符號計算 237
9.1 符號對象和符號表達式 237
9.1.1 創建符號對象——使用sym命令 237
9.1.2 創建符號對象——使用syms命令 240
9.1.3 符號計算的運算符和函式 241
9.1.4 識別對象 242
9.1.5 確定符號表達式中的變數 243
9.2 符號精度計算 244
9.3 操作符號表達式 245
9.3.1 合併表達式——collect函式 246
9.3.2 展開表達式——expand函式 247
9.3.3 因式分解——factor函式 248
9.3.4 嵌套表達式——horner函式 249
9.3.5 計算最小分母公因式——numden函式 250
9.3.6 簡化表達式——simplify函式 251
9.3.7 最簡化表達式——simple函式 252
9.3.8 按書寫方式顯示表達式——pretty函式 254
9.4 替換符號表達式 256
9.4.1 替換重複字元串——subexpr函式 256
9.4.2 替換特定符號——subs函式 257
9.5 符號函式 259
9.5.1 求反函式——finverse函式 259
9.5.2 求複合函式——compose函式 260
9.6 符號微積分 261
9.6.1 求微分——diff函式 261
9.6.2 化簡微分結果 262
9.6.3 求解矩陣微分 263
9.6.4 向量微分jacobian函式 264
9.6.5 符號極限 265
9.6.6 求解無限極限 266
9.6.7 求解左右極限 266
9.6.8 符號積分 267
9.6.9 矩陣積分 269
9.6.10 證明積分等式 269
9.6.11 互動近似積分 270
9.6.12 符號級數求和 272
9.7 符號積分變換 273
9.7.1 傅立葉變換 273
9.7.2 拉普拉斯變換 275
9.7.3 Z變換 276
9.8 符號矩陣的計算 277
9.8.1 線性代數運算 277
9.8.2 特徵值運算 280
9.9 符號代數方程的求解 282
9.9.1 solve命令 283
9.9.2 求解非線性方程組 283
9.9.3 求解含參數方程組 283
9.9.4 求解超越方程組 284
9.10 符號微分方程的求解 284
9.10.1 dsolve命令 285
9.10.2 求解常微分方程 285
9.10.3 求解二階常微分方程 286
9.10.4 求解常微分方程組 286
9.11 利用maple的資源 287
9.11.1 調用maple的相關命令 287
9.11.2 查看maple的幫助 289
9.12 可視化符號分析 290
9.12.1 單變數函式分析界面 291
9.12.2 泰勒級數逼近分析界面 293
9.13 小結 294
第3部分 數據可視化 295
第10章 二維圖形 296
10.1 圖形的基礎知識 296
10.1.1 離散數據(函式)的可視化 296
10.1.2 連續函式的可視化 297
10.1.3 繪製圖表的基礎步驟 299
10.2 繪製二維圖形 299
10.2.1 繪製二維圖形——使用plot命令 300
10.2.2 設定曲線的屬性 302
10.2.3 設定坐標軸範圍 304
10.2.4 設定坐標軸顯示方式 305
10.2.5 設定坐標軸系統 306
10.2.6 圖形標識 307
10.2.7 疊繪 309
10.2.8 繪製雙坐標軸圖形 311
10.2.9 繪製多子圖 312
10.2.10 互動式圖形 313
10.2.11 使用fplot命令繪製圖形 315
10.2.12 使用ezplot命令繪製圖形 316
10.3 特殊圖形 318
10.3.1 繪製面積圖 318
10.3.2 繪製直方圖 319
10.3.3 繪製二維餅圖 321
10.3.4 繪製矢量圖 321
10.3.5 繪製等高線 322
10.3.6 繪製偽色彩圖 323
10.3.7 繪製誤差棒 324
10.3.8 繪製二維離散桿圖 325
10.3.9 繪製散點圖 326
10.3.10 極坐標圖形 328
10.3.11 柱坐標圖形 328
10.4 小結 329
第11章 三維圖形 330
11.1 繪製三維曲線 330
11.1.1 繪製三維圖形——plot3命令 330
11.1.2 繪製三維曲線圖——mesh命令 331
11.1.3 繪製等高線 333
11.1.4 繪製曲面圖——surf命令 333
11.2 編輯三維圖形 335
11.2.1 控制視角——view命令 335
11.2.2 控制旋轉——rotate命令 336
11.2.3 設定背景顏色 338
11.2.4 設定圖形顏色 339
11.2.5 設定數值軸的顏色 340
11.2.6 添加顏色標尺 341
11.2.7 設定圖形的著色 343
11.2.8 控制照明——light命令 344
11.2.9 控制照明——lighting命令 345
11.2.10 控制材質——material命令 345
11.2.11 控制透視 346
11.2.12 控制透明 347
11.3 三維圖形的簡易命令 349
11.4 四維圖形 351
11.4.1 繪製切片圖——slice命令 351
11.4.2 繪製切面等位線圖 352
11.4.3 繪製流線切面圖 353
11.5 圖形視窗 353
11.5.1 創建和控制圖形視窗 354
11.5.2 使用工具列編輯圖形 355
11.5.3 使用繪圖工具編輯圖形 358
11.5.4 使用圖形視窗進行數據分析 364
11.6 繪製複數變數圖形 367
11.6.1 繪製複數圖形原理 367
11.6.2 繪製複數圖形——CPLXMAP命令 368
11.6.3 繪製複數曲面圖——CPLXROOT命令 369
11.7 圖形的列印和輸出 370
11.7.1 圖形列印的選單操作方式 370
11.7.2 圖形列印的命令操作方式 372
11.8 小結 372
第4部分 MATLAB編程 373
第12章 MATLAB編程基礎知識 374
12.1 簡單實例——排序函式 374
12.1.1 編寫函式檔案 374
12.1.2 編寫腳本檔案 376
12.1.3 運行代碼 377
12.1.4 檢測代碼 378
12.2 M檔案編輯器 379
12.2.1 打開檔案編輯器 379
12.2.2 設定M檔案編輯器的屬性 380
12.2.3 設定M檔案編輯器的列印屬性 382
12.3 MATLAB的變數和關係式 383
12.3.1 M檔案的變數類型 383
12.3.2 M檔案的關鍵字 384
12.3.3 關係表達式 384
12.3.4 關係表達式的優先權 386
12.3.5 截斷誤差問題 387
12.3.6 邏輯表達式 388
12.3.7 邏輯運算函式 390
12.4 程式結構 390
12.4.1 順序結構 390
12.4.2 if分支結構 391
12.4.3 switch分支結構 394
12.4.4 try-catch結構 395
12.4.5 while循環結構 396
12.4.6 for循環結構 398
12.4.7 繪製拋物線軌跡——綜合實例 400
12.5 控制語句 404
12.5.1 結束循環——continue命令 404
12.5.2 終止循環——break命令 405
12.5.3 轉換控制——return命令 406
12.5.4 輸入控制權——input命令 407
12.5.5 使用鍵盤——keyboard命令 408
12.5.6 提示警告信息——error和warning命令 408
12.6 小結 410
第13章 MATLAB編程高級話題 411
13.1 程式的向量化 411
13.1.1 程式的向量化 411
13.1.2 向量化和循環結構對比 413
13.1.3 邏輯數組 415
13.1.4 使用logical命令創建邏輯數組 415
13.1.5 邏輯數組和向量化 416
13.2 腳本和函式 418
13.2.1 編寫腳本檔案 418
13.2.2 編寫函式檔案 419
13.2.3 編寫P碼檔案 420
13.3 變數傳遞 421
13.3.1 變數檢測命令 421
13.3.2 “變長度”變數函式 422
13.3.3 跨空間計算表達式的數值 426
13.3.4 跨空間賦值 428
13.4 字元串演算函式 429
13.4.1 內聯函式——inline 429
13.4.2 求解函式零點 429
13.4.3 繪製函式圖形 431
13.4.4 求解最值 433
13.5 程式的調試和剖析 435
13.5.1 直接調試法 435
13.5.2 工具調試法 438
13.5.3 程式剖析 441
13.6 小結 444
第5部分 圖形用戶界面 445
第14章 句柄圖形 446
14.1 句柄圖形體系 446
14.1.1 圖形對象 447
14.1.2 句柄對象 447
14.1.3 句柄圖形的結構 447
14.1.4 圖形對象的屬性 448
14.2 圖形句柄的操作 448
14.2.1 創建圖形對象 449
14.2.2 訪問圖形對象的句柄 451
14.2.3 使用句柄操作圖形對象 453
14.3 圖形對象的操作 455
14.3.1 設定圖像屬性——set命令 455
14.3.2 使用結構體設定屬性 457
14.3.3 查詢圖形對象的屬性——get命令 460
14.3.4 查看圖形對象的默認屬性 462
14.3.5 設定不同級別的屬性 463
14.3.6 設定圖形對象的默認屬性 465
14.4 高層繪圖命令 466
14.4.1 設定父對象屬性——NextPlot屬性 467
14.4.2 檢查NextPlot屬性——newplot命令 467
14.4.3 高層繪圖檔案的構成 468
14.5 坐標軸對象 469
14.5.1 坐標軸的幾何屬性 469
14.5.2 坐標軸的刻度屬性 471
14.5.3 坐標軸的照相機屬性 472
14.6 綜合實例 474
14.6.1 穿越圖形 475
14.6.2 動態反射圖形 478
14.7 小結 485
第15章 圖形用戶界面基礎 486
15.1 圖形用戶界面概述 486
15.2 使用M檔案創建GUI對象 487
15.2.1 編寫程式代碼 487
15.2.2 運行程式代碼 492
15.3 使用GUIDE創建GUI對象 494
15.3.1 啟動GUIDE 494
15.3.2 添加“編輯框”控制項 496
15.3.3 查看程式代碼 497
15.3.4 運行GUI對象 497
15.3.5 創建GUI的注意事項 498
15.4 小結 500
第16章 創建選單 501
16.1 定製標準選單 501
16.2 使用GUIDE創建自定義選單 502
16.2.1 創建圖形界面 503
16.2.2 設定選單屬性 506
16.2.3 添加控制項 507
16.2.4 添加“File”選單的回調函式 509
16.2.5 添加“Thresholding Method”選單的回調函式 511
16.2.6 添加“滾動條”控制項的回調函式 517
16.2.7 添加其他控制項的回調函式 519
16.2.8 編寫主調函式 520
16.2.9 運行GUI對象 521
16.3 使用M檔案創建自定義選單 523
16.3.1 演示GUI的功能 523
16.3.2 添加“File”選單的功能代碼 524
16.3.3 添加“Options”選單的功能代碼 526
16.3.4 添加“Graphs”選單的功能代碼 527
16.3.5 添加主調函式 531
16.3.6 運行GUI對象 533
16.4 創建快捷選單 535
16.4.1 編寫程式代碼 535
16.4.2 運行GUI對象 540
16.5 小結 542
第17章 添加控制項 543
17.1 創建GUI對象的用戶控制項 543
17.1.1 添加控制項組件 544
17.1.2 添加控制項的功能代碼 547
17.1.3 運行程式代碼 553
17.2 圖像切割界面——綜合案例 555
17.2.1 分析GUI對象 556
17.2.2 規劃GUI的設計過程 556
17.2.3 創建GUI的工具列對象 557
17.2.4 準備圖形對象的基礎檔案 558
17.2.5 處理指針對象 567
17.2.6 設定圖形對象的屬性 571
17.2.7 編寫主程式代碼 574
17.2.8 設定GUI對象的選單選項 601
17.2.9 檢測程式代碼 612
17.3 小結 618
第6部分 MATLAB仿真 619
第18章 Simulink基礎知識 620
18.1 Simulink概述 620
18.1.1 安裝Simulink 621
18.1.2 啟動Simulink 622
18.2 一個簡單的仿真系統 622
18.2.1 添加模組 623
18.2.2 設定模組屬性 624
18.2.3 連線模組 626
18.2.4 運行仿真系統 627
18.3 Simulink的工作環境 628
18.3.1 Simulink模型視窗界面 630
18.3.2 使用“File”選單 631
18.3.3 使用“Edit”選單 632
18.3.4 使用“View”選單 633
18.3.5 使用“Simulation”選單 635
18.3.6 使用“Help”選單 636
18.4 Simulink中的數據類型 636
18.4.1 Simulink支持的數據類型 637
18.4.2 數據傳遞 639
18.4.3 向量化模組 641
18.4.4 使用Mux模組 642
18.4.5 標量擴展 644
18.5 Simulink的基本操作 645
18.5.1 Simulink模型的工作原理 645
18.5.2 操作模組 646
18.5.3 顯示模組的屬性 647
18.5.4 顯示輸出數值 648
18.5.5 連線線的分支 649
18.5.6 彩色顯示信號線 650
18.5.7 設定連線線的屬性 651
18.6 Simulink的信號 651
18.6.1 創建信號 651
18.6.2 添加信號標籤 652
18.6.3 複數信號 652
18.6.4 虛擬信號 653
18.6.5 控制信號 655
18.6.6 信號匯流排 657
18.6.7 信號組 661
18.6.8 使用自定義信號源 666
18.6.9 信號接收器 668
18.7 Simulink仿真的設定 672
18.7.1 設定解算器參數 673
18.7.2 仿真數據的輸入輸出設定 674
18.7.3 仿真診斷設定 676
18.8 小結 677
第19章 Simulink建模和子系統 678
19.1 Simulink線性系統建模 678
19.1.1 線性系統建模簡介 678
19.1.2 求解拋投小球的軌跡 680
19.1.3 求解二階微分方程 682
19.1.4 使用傳遞函式 686
19.1.5 使用狀態方程 687
19.1.6 “積分器”模組的工作原理 688
19.2 非線性系統建模 689
19.2.1 非線性系統建模簡介 690
19.2.2 求解非線性摩擦模型 692
19.3 子系統 699
19.3.1 子系統的基礎知識 699
19.3.2 創建子系統 699
19.3.3 使用模組組合子系統 701
19.4 信號輸出系統——子系統實例 703
19.4.1 添加控制信號 703
19.4.2 添加子系統模組 704
19.4.3 運行仿真系統 706
19.5 封裝子系統 707
19.5.1 封裝子系統的創建方法 708
19.5.2 封裝子系統的步驟 708
19.6 ABS系統——封裝子系統實例 711
19.6.1 添加“Bang-bang controller”子系統 711
19.6.2 添加“brake torque”子系統 713
19.6.3 添加“tire torque”子系統 713
19.6.4 添加子系統的程式代碼 715
19.6.5 添加“Subsystem”子系統 717
19.6.6 運行仿真系統 719
19.7 使能子系統 721
19.7.1 創建使能子系統 721
19.7.2 信號輸出系統——使能子系統實例 722
19.8 觸發子系統 726
19.8.1 觸發子系統簡介 726
19.8.2 觸發子系統的屬性 726
19.9 觸發子系統實例 728
19.9.1 添加系統模組 729
19.9.2 設定“Throttle & Manifold”子系統屬性 730
19.9.3 設定“Intake”子系統屬性 731
19.9.4 設定“Compression”子系統屬性 732
19.9.5 設定“Combustion”子系統屬性 733
19.9.6 設定“Drag Torque”子系統屬性 733
19.9.7 設定“Vehicle Dynamics”子系統屬性 734
19.9.8 設定“valve timing”子系統屬性 734
19.9.9 運行仿真系統 735
19.10 小結 736
第20章 S函式和仿真結果分析 737
20.1 S函式 737
20.1.1 S函式概述 737
20.1.2 S函式的運行機理 738
20.1.3 S函式模板 738
20.1.4 添加S函式模組 741
20.1.5 添加S函式程式代碼 743
20.1.6 運行仿真 745
20.2 振盪運行系統——S函式綜合實例 746
20.2.1 添加系統模組 746
20.2.2 添加S函式的程式代碼 748
20.2.3 添加子系統模組 750
20.2.4 運行仿真系統 753
20.3 分析仿真結果 754
20.3.1 分析Simulink模型的特徵 754
20.3.2 使用Sim命令 756
20.3.3 使用simset命令 757
20.3.4 模型的線性化 760
20.3.5 系統平衡點分析 762
20.4 交替執行系統——綜合實例1 764
20.4.1 添加系統模組 764
20.4.2 設定系統模組的屬性 765
20.4.3 添加“Enabled”子系統 768
20.4.4 運行仿真系統 771
20.5 雷達軌跡分析——綜合實例2 772
20.5.1 系統模組簡介 772
20.5.2 添加系統模組 772
20.5.3 添加“Cross-Axis Acceleration Model”子系統 775
20.5.4 添加“Cartesian to Polar”子系統 775
20.5.5 添加“Radar Kalman Filter”子系統 777
20.5.6 添加程式代碼 779
20.5.7 運行仿真系統 781
20.6 小結 782
第7部分 高級套用 783
第21章 檔案I/O 784
21.1 處理檔案名稱稱 784
21.2 打開和關閉檔案 786
21.2.1 打開檔案 786
21.2.2 關閉檔案 788
21.3 處理二進制檔案 789
21.3.1 讀取M檔案 789
21.3.2 讀取TXT檔案 792
21.3.3 寫入二進制檔案 794
21.4 處理文本檔案 795
21.4.1 讀取文本檔案 795
21.4.2 使用csvwrite命令讀入文本檔案 800
21.4.3 使用dlmwrite命令讀入文本檔案 801
21.5 處理圖像 802
21.6 小結 805
第22章 MATLAB編譯器 806
22.1 編譯器概述 806
22.1.1 編譯器的功能 806
22.1.2 Complier 4.0的性能改進 807
22.2 編譯器的安裝和配置 807
22.2.1 前提準備 807
22.2.2 配置編譯器 808
22.3 編譯過程 813
22.3.1 安裝MCR 813
22.3.2 代碼的編譯過程 814
22.4 編譯命令 815
22.4.1 編譯命令的格式和選項 815
22.4.2 處理腳本檔案 816
22.5 創建獨立運行的程式 818
22.5.1 編譯M檔案 818
22.5.2 編譯M和C的混合檔案 821
22.5.3 編譯包含繪圖命令的M檔案 823
22.6 小結 828
第23章 應用程式接口 829
23.1 C語言MEX檔案 829
23.1.1 MEX檔案的數據 829
23.1.2 MEX檔案的結構 830
23.1.3 MEX檔案的實例 833
23.2 MAT檔案 837
23.2.1 使用C語言創建MAT檔案 838
23.2.2 使用Fortran語言創建MAT檔案 841
23.3 MATLAB引擎技術 844
23.3.1 引擎技術概念 845
23.3.2 引擎技術套用 845
23.4 Java接口 849
23.4.1 Java接口 849
23.4.2 Java接口套用 855
23.5 小結 860
配套光碟中的內容
第8部分 用戶工具箱 861
第24章 圖形圖像工具箱 862
24.1 MATLAB中的圖像 862
24.1.1 圖像類型 862
24.1.2 多幀圖像 864
24.1.3 讀取圖像檔案 865
24.1.4 查看圖像檔案信息 867
24.2 顯示圖像 869
24.2.1 默認顯示方式 869
24.2.2 添加顏色條 869
24.2.3 顯示多幀圖像 870
24.2.4 顯示動畫 871
24.2.5 三維材質圖像 872
24.3 圖像的幾何運算 873
24.3.1 縮放圖像 873
24.3.2 旋轉圖像 875
24.3.3 裁剪圖像 877
24.4 圖像的灰度變換 878
24.4.1 圖像的直方圖 878
24.4.2 灰度變換 880
24.4.3 均衡直方圖 882
24.5 圖像的濾波 883
24.6 分析圖像 886
24.6.1 分析圖像的像素信息 886
24.6.2 分析圖像的灰度信息 887
24.6.3 繪製等高圖 888
24.7 小結 889
第25章 信號工具箱 890
25.1 產生信號 890
25.1.1 周期方波和鋸齒波 890
25.1.2 周期sinc波 891
25.1.3 高斯調幅正弦波 892
25.1.4 調頻信號 893
25.1.5 高斯分布隨機序列 894
25.2 隨機信號處理 895
25.2.1 隨機信號的互相關函式 895
25.2.2 隨機信號的互協方差函式 896
25.2.3 譜分析——psd函式 897
25.2.4 譜分析——pwelch函式 899
25.3 模擬濾波器設計 900
25.3.1 巴特沃斯濾波器 900
25.3.2 切比雪夫Ⅰ型濾波器 901
25.3.3 切比雪夫Ⅱ型濾波器 902
25.4 IIR數字濾波器設計 903
25.4.1 巴特沃斯數字濾波器設計 904
25.4.2 切比雪夫I型數字濾波器設計 905
25.4.3 切比雪夫II型數字濾波器設計 907
25.5 小結 908
附錄A MATLAB常用函式檢索表 909
前言
MATLAB是Mathworks公司推出的一套高性能數值計算和可視化軟體,它集數值分析、矩陣運算、信號處理和圖形顯示於一體,在系統建模和仿真、科學和工程繪圖及應用程式開發等方面有著廣泛套用。MATLAB以著名的線性代數軟體包LINPAK和特徵值計算軟體包EISPACK的子程式為基礎,發展為一種開發性程式設計軟體,因此MATLAB已經由簡單的矩陣計算軟體分析發展成為通用性極高、帶有多種實用工具的運算操作平台。
為了幫助眾多從業者提高軟體使用及操作水平,作者精心編著了本書。本書依照讀者的學習規律,首先介紹基本概念和基本操作,在讀者掌握了這些基本概念和基本操作的基礎上,再對內容進行深入的講解,嚴格遵循由淺入深、循序漸進的原則。本書按照MATLAB內在的聯繫將各種工具、命令和命令面板交織編排在一起,這樣編排雖然不像幫助文檔那樣有層次感,但是對理解和掌握MATLAB卻是大有幫助的。
本書在內容的編排和目錄組織上都十分講究,爭取讓讀者能夠快速掌握軟體的使用方法。講解具體知識的時候,儘量避免冗長的知識講解,直接切入主題,告訴讀者如何實現特定功能,讓讀者在實際操作中熟悉軟體的使用。
和其他書籍相比,本書有何特點
1.取材廣泛,內容充實
作者在講解每一個知識點之前,充分考慮了MATLAB的知識和實踐工作的結合,精心挑選數學研究、圖形設計、工程運用等各個領域的套用,使讀者不僅僅單純地學到MATLAB的操作技巧,而且對創意、思路有所提高。
2.內容深入
本書的所有實例都有一定的代表性和通用性,並不是為單純介紹某個命令而選取的,因此有些實例的步驟比較多,綜合了MATLAB的多個知識點,能夠提高用戶綜合使用知識的能力。
3.講解仔細
每個實例的製作步驟都以通俗易懂的語言闡述,並穿插講解和技巧文字,在閱讀時就像聽課一樣詳細而貼切。讀者只需按照步驟操作,就可以學習到MATLAB的相關功能。
本書包括的內容
本書總共包括8個部分25章的內容,全面地介紹了MATLAB的各方面套用,下面詳細介紹各章節的內容。
第1部分(第1章至第4章)介紹了MATLAB的基礎知識,主要包括MATLAB概述、數組、矩陣和架構及矩陣分析。
第2部分(第5章至第9章)主要講解如何使用MATLAB進行數據分析,內容包括函式分析和數值運算、高級數值運算、最佳化、常微分方程和符號運算。
第3部分(第10章和第11章)詳細分析了數據可視化的方法,主要講解了二維圖形和三維圖形的內容。
第4部分(第12章和第13章)介紹了MATLAB編程的內容,主要包括MATLAB編程的基礎知識和高級話題。
第5部分(第14章至第17章)詳細講解了圖形用戶界面的內容,主要包括句柄圖形、GUI基礎、創建選單和添加控制項等。
第6部分(第18章至第20章)主要介紹了MATLAB仿真的內容,包括Simulink基礎知識、Simulink建模和子系統、S函式和仿真結果分析。
第7部分(第21章至第23章)講解了MATLAB的高級套用,包括檔案輸入/輸出、編譯器和應用程式接口。
第8部分(第24章和第25章)將放在隨書附贈的光碟中,主要內容是用戶工具箱,主要介紹了圖形圖像工具箱和信號工具箱。
讀者評價摘選
本書第一版上市以來獲得喜人銷量,同時得到了讀者的廣泛好評。下面節選幾位熱心讀者在噹噹網上的評價,以饗讀者。
很實用的一本書!而且講得也比較系統。
——網友ID:zml829@***.***
堪稱MATLAB界的權威之作!
——網友ID:liuyanhe
內容非常豐富!對於科研來說已經足夠!讚一個!
——網友ID:yanxhia
儘管作為一個初學者,但是擁有《MATLAB寶典》,我確實能自由應對美國大學生數學建模比賽的各種情況了。希望在初學階段,每個人都擁有一本。不必記住所有,但能運用一切。
——網友ID:沙灘紅葉
本書作者
本書主要由陳杰編寫。其他參與編寫的人員有張增強、於鋒、張偉、曾廣平、劉海峰、劉濤、趙寶永、鄭蓮華、張濤、楊強、陳濤、羅淵文、李居英、郭永勝等。在此對所有參與編寫的人表示感謝!
本書知識全面、實例精彩、指導性強,力求以全面的知識性及豐富的實例來指導讀者透徹學習MATLAB各方面的技術。本書適用於初、中級MATLAB用戶,同時也適合使用MATLAB的本科生、研究生和教師以及廣大科研工作人員作為參考用書,對高級讀者也有一定的啟發意義。
作者
2010年歲末