宣傳語
1、 知識全面,實例精彩,指導性強
基礎知識、開發進階、行業套用、程式接口,循序漸進地全面講解MATLAB的方方面面。
2、 用實例說話,講解詳細,通俗易懂
全書包括300多個實例,理論聯繫實際,語言簡潔易懂,知識點分類明確。
內容簡介
MATLAB是由MathWorks公司推出的用於數值計算、圖像處理、信號處理、自動控制和數據分析等諸多方面的科學計算軟體。本書由入門到提高系統地介紹了MATLAB及其工具箱的基本功能與使用,包括MATLAB基礎知識、數值計算、符號計算、編程基礎、檔案操作、數據可視化、圖像處理、最佳化工具箱、信號處理、Simulink仿真、GUI設計、MATLAB與Microsoft Office和混合編程等功能的使用方法。在配套光碟中附有部分實例的源檔案,以方便讀者理解和掌握相關知識。
全書包含了378個計算實例,所有的實例都經過上機調試,可靠完整。讀者可以在自己的MATLAB環境中準確地重現本書所提供的實例結果。
本書既可以作為理工科院校研究生、本科生系統學習的教材,又可以作為廣大科技工作者對MATLAB軟體入門到提高的自學用書和使用手冊。
前言
1984年,Cleve Moler和John Little成立了MathWorks公司,發行了MATLAB第1版(DOS版本1.0),正式把MATLAB推向市場。MATLAB的第一個商業化的版本是同年推出的是3.0的DOS版本。其後MathWorks公司繼續進行MATLAB的研究和開發,逐步將其發展成為一個集數值處理、圖形處理、圖像處理、符號計算、文字處理、數學建模、實時控制、動態仿真、信號處理為一體的數學套用軟體,並且成為目前世界上使用最廣泛的科學計算軟體之一。
2006年3月,MathWorks公司正式發布了MATLABR2006a(即MATLAB7.2版)。從這一個版本開始,MathWorks公司將每年進行兩次產品發布,時間分別在每年的3月和9月,而且,每一次發布都會包含所有的產品模組,如產品的newfeature、bugfixes和新產品模組的推出。2008年3月1日,MATLABR2008a發布,即MATLAB7.6版和Simulink7.1版。在這個版本中包括了以下重要更新:
(1)完全實現面向對象編程。
在MATLAB的早期版本裡面,也有class的概念,不過功能不強,過程煩瑣。而新的設計寫出來的類和在python裡面寫的看起來差不多,吸收了Python和C#的優點,除了支持封裝(encapsulation),繼承(inheritance)和多態(polymorphism)這些基本特性以外,還支持了一些新興的特性,包括屬性(property),事件(event)和靜態方法(static method)。
(2)支持Handle類型——用另外一種說法,就是支持函式調用傳引用。
以前MATLAB傳遞參數只有一種方法,copy on write。就是說,當你傳一個東西進去,如果它要發生改變,那么,這個東西會整個copy一份,然後修改會在副本上生效。這使得實現動態數據結構變得非常困難。因此,傳統上MATLAB擅長於以矩陣為基礎的算法,但是對於以經典動態數據結構為基礎的算法,比如動態列表,哈希表,搜尋樹,圖等,就力不從心了。這個新版本終於引入了對引用的支持,這將使MATLAB實現經典數據結構和算法變得前所未有的輕鬆。現在,數值和統計算法與經典算法越來越多地合流,很多套用都需要同時使用兩方面的算法,MATLAB的這個變化正好適應了這種需求。
(3)引入了名空間的管理。
以前,MATLAB所有的函式都在同一個global的名空間下面。比如兩個工具包裡面出現了同名函式,解決起來很麻煩。比如現在有兩個算法叫LDA,一個是latentDirichlet Allocation,一個是Linear Discriminant Analysis,在一個套用中需要同時用到兩個算法,而寫這兩個算法的人各自把它們命名為lda.m,那么問題就出來了。一種naive的方法是改名字,不過會直接破壞掉那些toolbox裡面對那個函式的依賴。而這個版本,它借鑑其他高級語言的經驗,終於引入了namespace,給這個問題一個很好的解決。
從這些特點看來,MATLAB這個版本的重要改變,就是全面吸收其他高級語言的特性,從一個數值運算語言開始邁向一個以數值計算為強項的通用語言,以應對複雜或者更大規模套用的需要。
本書內容
本書從使用者的角度出發,通過融經驗技巧於一體的典型事例講解,由入門到提高系統地介紹了MATLAB及其工具箱的基本功能與使用,包括MATLAB基礎知識、數值計算、符號計算、編程基礎、檔案操作、數據可視化、圖像處理、最佳化工具箱、信號處理、Simulink仿真、GUI設計、MATLAB與MS OFFICE和混合編程等功能的使用方法。在配套光碟中附有部分實例的源檔案,以方便讀者理解和掌握相關知識。以下是本書附贈資源介紹
1.源檔案的運行環境
作業系統:Windows vista/Windows XP/Windows 2000
開發工具:MATLAB R2008a
2.源檔案資料夾
包括本書涉及的所有源檔案,讀者可以在學習的過程中,直接將其複製到MATLAB的當前工作目錄下,提高學習效率。
章 節 例題數量 章 節 例題數量
第1章 MATLAB操作基礎 0 第8章 MATLAB在數字圖像處理中的套用 29
第2章 數據結構與類型 55 第9章 MATLAB最佳化問題套用 23
第3章 數值計算及數據分析 50 第10章 MATLAB在信號處理中的套用 18
第4章 符號運算 52 第11章 Simulink仿真 10
第5章 MATLAB編程基礎 56 第12章 圖形用戶界面GUI設計 3
第6章 MATLAB檔案操作 39 第13章 MATLAB與Office 5
第7章 數據可視化 29 第14章 MATLAB應用程式接口 8
聯繫我們
全書第1、2、3、4章由彭雪峰負責編寫,第5、6、13章由王文鵬負責編寫,第7、8、12章由劉家佳負責編寫,第9、10、11、14章由董辰輝負責編寫。
由於編者水平及使用經驗有限,不妥之處在所難免,望各位讀者不吝賜教。
編 者
2008年12月
圖書目錄
第1篇 基礎知識
第1章 MATLAB操作基礎 2
1.1 MATLAB概述 3
1.2 MATLAB發展歷史 3
1.3 MATLAB主要功能 4
1.4 MATLAB安裝 5
1.5 MATLAB的啟動和退出 7
1.5.1 MATLAB啟動 7
1.5.2 MATLAB的退出 8
1.6 MATLAB操作界面 8
1.6.1 選單欄 8
1.6.2 工具列 13
1.6.3 命令視窗 13
1.6.4 工作空間視窗 15
1.6.5 當前目錄視窗 15
1.6.6 歷史記錄視窗 17
1.7 MATLAB在線上幫助系統 18
1.7.1 在線上幫助系統 18
1.7.2 命令視窗查詢幫助 19
第2章 數據結構與類型 22
2.1 常量與變數 23
2.1.1 常量 23
2.1.2 變數 24
2.2 數組與矩陣 25
2.2.1 數組 25
2.2.2 矩陣 31
2.3 邏輯類型與關係運算 36
2.3.1 邏輯數據類型 37
2.3.2 邏輯運算 38
2.3.3 關係運算 39
2.3.4 運算符優先權 41
2.4 字元串 41
2.4.1 創建字元串 41
2.4.2 類型轉換 43
2.4.3 比較字元串 45
2.4.4 字元分類 46
2.4.5 查找與替換 46
2.5 結構數組 47
2.5.1 結構數組的創建 47
2.5.2 結構數組中的數據獲取 49
2.5.3 結構數組中的操作 50
2.5.4 結構數組的大小 52
2.5.5 結構數組的嵌套 53
2.6元胞數組54
2.6.1 元胞數組的創建 54
2.6.2 元胞數組中的數據獲得 55
2.6.3 元胞數組的刪除與重塑 57
2.6.4 元胞數組中的操作函式 59
2.6.5 元胞數組的嵌套 61
2.6.6 元胞數組與數值數組間的轉化 62
第3章 數值計算及數據分析 64
3.1 因式分解 65
3.1.1 行列式、逆和秩 65
3.1.2 LU因式分解 67
3.1.3 QR因式分解 69
3.1.4 範數 70
3.2 矩陣特徵值和奇異值 72
3.2.1 特徵值和特徵向量的求取 72
3.2.2 奇異值分解 74
3.3 數據分析和統計 76
3.3.1 基本的數據分析函式 76
3.3.2 協方差和相關係數函式 82
3.4 數值積分 83
3.4.1 一元函式的數值積分 83
3.4.2 二重積分的數值計算 85
3.4.3 三重積分的數值計算 85
3.5 插值 86
3.5.1 一維數據插值 86
3.5.2 二維數據插值 88
3.5.3 多維插值 89
3.6 多項式曲線擬合 90
3.6.1 最小二乘原理及其曲線擬合算法 90
3.6.2 曲線擬合的實現 91
3.7 傅立葉分析 92
3.7.1 傅立葉變換 92
3.7.2 快速傅立葉變換 93
3.8 微分方程 96
3.8.1 常微分方程 96
3.8.2 偏微分方程 99
3.9 稀疏矩陣 103
3.9.1 稀疏矩陣的存儲方式 103
3.9.2 稀疏矩陣的創建 103
3.9.3 稀疏矩陣的函式處理 106
3.9.4 稀疏矩陣的交換與重新排序 108
第4章 符號運算 110
4.1 符號變數、表達式及符號方程 111
4.1.1 使用sym函式定義符號變數及表達式 111
4.1.2 使用SYMS函式定義符號變數及表達式 112
4.1.3 符號方程的生成 112
4.2 符號變數的基本操作 112
4.2.1 findsym函式 113
4.2.2 任意精度確定的符號表達式 113
4.2.3 數值型與符號型變數的轉換 114
4.3符號矩陣的生成和運算 115
4.3.1 符號矩陣的生成 116
4.3.2 符號矩陣及符號數組的運算 117
4.4 符號微積分 122
4.4.1 符號求極限 122
4.4.2 符號求導與微分 123
4.4.3 符號積分 124
4.4.4 級數求和 125
4.4.5 taylor級數 125
4.5 符號函式圖形表示 126
4.5.1 繪製符號函式的圖形 126
4.5.2 三維參量曲線圖 127
4.5.3 極坐標圖形 128
4.5.4 符號函式的三維格線圖 128
4.5.5 繪製符號函式等高線圖 129
4.5.6 不同顏色填充等高線圖 130
4.5.7 曲面格線圖與等高線圖的混合圖 131
4.5.8 三維彩色曲面圖 132
4.5.9 曲面圖與等高線圖的混合圖 133
4.5.10 繪製函式圖形 134
4.6 符號代數方程的求解 135
4.6.1 求代數方程符號解 135
4.6.2 求代數方程組符號解 136
4.6.3 求微分方程符號解 138
4.6.4 求微分方程組符號解 139
4.7 符號表達式的基本運算 140
4.7.1 符號表達式的提取分子、分母運算 140
4.7.2 符號表達式的基本代數運算 141
4.7.3 符號表達式的高級運算 141
4.7.4 符號數值函式的創建 147
第5章 MATLAB編程基礎 148
5.1 M檔案 149
5.1.1 M檔案編輯器 149
5.1.2 M檔案的基本內容 150
5.1.3 腳本式M檔案 152
5.1.4 函式式M檔案 153
5.2 函式流程控制 154
5.2.1 順序結構 154
5.2.2 if…else…end 155
5.2.3 switch…case…end 158
5.2.4 for循環 159
5.2.5 while循環 162
5.2.6 人機互動命令 163
5.3 函式的類型 168
5.3.1 主函式 168
5.3.2 子函式 168
5.3.3 私有函式 170
5.3.4 嵌套函式 171
5.3.5 重載函式 177
5.3.6 匿名函式 177
5.4 函式的變數和參數 183
5.4.1 變數類型 183
5.4.2 變數的輸入輸出規則 184
5.4.3 向嵌套函式輸入可選參數 187
5.4.4 傳送特定類型的參數 189
5.5 函式句柄 191
5.5.1 函式句柄的創建 191
5.5.2 函式句柄的調用 192
5.5.3 函式句柄的操作 192
5.6 記憶體的使用 194
5.6.1記憶體管理函式194
5.6.2 高效使用記憶體的策略 194
5.6.3 解決“Out of Memory”錯誤 196
5.7 程式調試和最佳化 196
5.7.1 使用Debugger視窗進行調試 197
5.7.2 在命令視窗中進行調試 202
5.7.3 Profile性能檢測 205
5.8 錯誤處理 209
5.8.1 使用 try-catch語句捕捉錯誤 209
5.8.2 處理錯誤和從錯誤中恢復 209
5.8.3 警告 212
5.9 程式開發的一些建議 215
第2篇 開發進階
第6章 MATLAB檔案操作 218
6.1 MATLAB支持的檔案格式 219
6.2 使用導入嚮導來導入文本數據 219
6.3 使用導入函式來導入文本數據 222
6.3.1 導入數值文本數據 223
6.3.2 導入有分隔設定的ASCII數據檔案 224
6.3.3 導入帶有文本頭的檔案數據 225
6.3.4 導入字母數值混合的數據 225
6.4 按照ASCII碼格式導出數據 226
6.4.1 將數據導出成帶有分隔設定的ASCII
6.4.1 碼檔案 227
6.4.2 使用diary命令來導出數據 228
6.4.3 用csvwrite函式導出矩陣數據 229
6.5 對mat檔案的操作 229
6.5.1 使用嚮導來導入mat檔案中的數據 229
6.5.2 使用函式或命令來預覽和導入mat檔案
6.4.1 中的數據 230
6.6 將Workspace中數據導出為mat檔案 231
6.6.1 通過選單將Workspace中數據導出
6.4.1 為mat檔案 232
6.6.2 通過save命令導出Workspace中
6.4.1 數據為mat檔案 232
6.7 對圖像檔案的操作 234
6.7.1 使用嚮導導入圖像檔案 234
6.7.2 讀入與導出圖像檔案數據 234
6.8 對音頻和視頻檔案的操作 235
6.8.1 利用嚮導打開音頻或視頻檔案 235
6.8.2 獲取音頻和視頻檔案的檔案頭信息 236
6.8.3 音頻視頻檔案的讀入與導出 236
6.9 對表檔案的操作 239
6.9.1 對Excel文檔的操作 239
6.9.2 對Lotus 123數據表的操作 241
6.10 使用低端I/O函式來操作檔案 242
6.10.1 檔案的打開和關閉 242
6.10.2 二進制數據的讀取 243
6.10.3 二進制數據的寫入 245
6.10.4 逐行讀取文本檔案 245
6.10.5 格式化讀取ASCII碼數據 246
6.10.6 格式化寫入文本檔案 247
6.10.7 控制檔案指針 248
第7章 數據可視化 251
7.1 二維圖形 252
7.1.1 基本繪圖函式 252
7.1.2 特殊二維圖形 257
7.2 三維圖形 266
7.2.1 繪製三維曲線圖 266
7.2.2 繪製三維曲面圖 267
7.2.3 特殊三維圖形 269
7.3 圖形注釋 271
7.3.1 圖形注釋方法 271
7.3.2 圖題的標註 272
7.3.3 添加坐標軸標註 273
7.3.4 文本標註和互動式文本標註 274
7.3.5 圖例的添加 275
7.3.6 坐標格線的添加 276
7.4 三維圖形的高級控制 277
7.4.1 視點控制 277
7.4.2 顏色的使用 278
7.4.3 光照控制 280
第3篇 行業套用
第8章 MATLAB在數字圖像處理中的套用 282
8.1數字圖像處理學283
8.1.1 數字圖像處理內容 283
8.1.2 數字圖像處理套用 283
8.2 MATLAB圖像 285
8.2.1 MATLAB圖像類型 285
8.2.2 圖像格式 286
8.3 圖像檔案的操作 287
8.3.1 查詢圖像檔案的信息 287
8.3.2 圖像檔案的讀取 288
8.3.3 圖像檔案的顯示 289
8.3.4 圖像檔案的存儲 291
8.3.5 圖像格式的轉換 291
8.4 圖像的幾何運算 295
8.4.1 圖像的平移 295
8.4.2 圖像的鏡像變換 297
8.4.3 圖像縮放 298
8.4.4 圖像的旋轉 299
8.4.5 圖像的剪下 301
8.5 圖像的正交變換 302
8.5.1 傅立葉變換 302
8.5.2 離散餘弦變換 309
8.5.3 沃爾什-哈達瑪變換(WHT) 312
8.5.4radon變換317
8.6 MATLAB圖像增強 319
8.6.1 像素值及其統計特性 319
8.6.2 對比度增強 322
8.6.3直方圖均衡化 324
8.6.4 空域濾波增強 326
8.6.5 頻域增強 331
第9章 MATLAB最佳化問題套用 334
9.1 MATLAB求解器 336
9.2 求解極小值 336
9.2.1 標量最小值最佳化 337
9.2.2 無約束最小值最佳化 340
9.2.3 線性規劃 345
9.2.4 二次規劃 347
9.2.5 約束最小值最佳化 350
9.3 多目標最佳化 354
9.3.1 fgoalattain函式 355
9.3.2 fminimax函式 358
9.4 方程組求解 360
9.4.1fzero函式 360
9.4.2fsolve函式 362
9.5 最小二乘及數據擬合 365
9.5.1 lsqnonneg函式 365
9.5.2 lsqlin函式 367
9.5.3 lsqnonlin函式 369
9.5.4 lsqcurvefit函式 371
9.6 直接搜尋法 373
9.7 模擬退火算法 374
9.7.1 模擬退火算法簡介 374
9.7.2 模擬退火算法套用實例 376
9.7.3 關於驗證計算 378
9.8 遺傳算法 379
9.8.1 遺傳算法簡介 379
9.8.2 遺傳算法套用實例 382
9.9 optimtool簡介 384
第10章 MATLAB在信號處理中的套用 389
10.1 信號處理基本理論與MATLAB實現 390
10.1.1 信號處理基本理論 390
10.1.2 信號的產生 391
10.1.3 離散信號的基本運算 394
10.2 離散信號的數學變換和MATLAB
10.2 實現 394
10.2.1 Z變換分析 394
10.2.2 Z變換MATLAB實現 395
10.2.3 Fourier變換分析 397
10.2.4 離散Fourier變換MATLAB實現 397
10.3 數字濾波器的結構 399
10.3.1 數字濾波器 399
10.3.2IIR數字濾波器的結構 400
10.3.3 FIR數字濾波器的結構 402
10.4 IIR濾波器的MATLAB實現 403
10.4.1 IIR濾波器經典設計 404
10.4.2 IIR濾波器的直接設計法 413
10.4.3 廣義巴特沃思的IIR濾波器設計 414
10.5 FIR濾波器的MATLAB實現 416
10.5.1 FIR濾波器設計 416
10.5.2fir1函式 417
10.5.3 fir2函式 419
第11章 Simulink仿真 421
11.1 Simulink簡介 422
11.1.1 Simulink功能與特點 422
11.1.2 Simulink的安裝 424
11.1.3 Simulink 7.1新特點 424
11.2 Simulink基礎 425
11.2.1 Simulink模型是什麼 425
11.2.2 Simulink啟動與視窗介紹 425
11.2.3 Simulink模組操作 427
11.2.4 Simulink信號線操作 431
11.2.5 Simulink對模型的注釋 432
11.2.6 Simulink常用的模型庫 434
11.2.7 Simulink仿真配置 436
11.3 Simulink 動態系統仿真 445
11.3.1 簡單系統的仿真分析 445
11.3.2 離散系統的仿真分析 448
11.3.3 連續系統的仿真分析 450
11.4 Simulink模型中的子系統 454
11.4.1 子系統的建立 454
11.4.2 子系統的封裝 458
11.5 Simulink S-函式 464
11.5.1 什麼是S-函式 464
11.5.2 S-函式的作用和原理 464
11.5.3 用M檔案表述的S-函式 466
11.5.4 用M檔案創建S-函式實例 470
第12章 圖形用戶界面GUI設計 473
12.1 句柄圖形對象 474
12.1.1 圖形對象 474
12.1.2 圖形對象句柄 474
12.1.3 圖形對象屬性的獲取和設定 476
12.2 GUI的基本知識 479
12.2.1 啟動GUI 479
12.2.2 布局(Layout)編輯器 479
12.2.3 運行GUI 480
12.3 創建GUI 480
12.3.1 GUI視窗布局 480
12.3.2 選單的添加 482
12.3.3 控制項 487
12.4 GUI編程 492
12.4.1 GUI的M檔案 492
12.4.2 GUI編程舉例 495
第4篇 程式接口
第13章 MATLAB與Office 500
13.1 MATLAB與Word 501
13.1.1 Notebook的安裝 501
13.1.2 Notebook的啟用 501
13.1.3 Notebook功能選單 503
13.1.4 Notebook的使用 511
13.1.5 輸出的控制 515
13.2 MATLAB與Excel 516
13.2.1 Excel Link安裝 516
13.2.2 Excel Link函式 520
13.2.3 Excel Link的套用 520
第14章 MATLAB應用程式接口 525
14.1 MATLAB應用程式接口介紹 526
14.2 MATLAB調用C/C++ 527
14.2.1 MATLABmex檔案527
14.2.2 C-MEX檔案的使用 531
14.3 C/C++調用MATLAB引擎 535
14.3.1 MATLAB計算引擎概述 535
14.3.2 MATLAB計算引擎庫函式 536
14.3.3 C/C++調用MATLAB引擎 538
14.4 MATLAB編譯器 542
14.4.1 MATLAB編譯器的安裝和設定 543
14.4.2 MATLAB編譯器的使用 544
14.4.3 獨立應用程式 546
實例目錄
第1章 MATLAB操作基礎 2
第2章 數據結構與類型 22
【例2-1】Inf和NaN的運算實例。 23
【例2-2】最小複數單位的使用。 24
【例2-3】一維數組的定址與賦值。 26
【例2-4】直接輸入二維數組。 27
【例2-5】用指令輸入二維數組。 27
【例2-6】二維數組的定址與賦值。 28
【例2-7】多維數組的創建。 29
【例2-8】用MATLAB函式生成多維數組。 30
【例2-9】用cat函式生成多維數組。 30
【例2-10】cat函式嵌套。 31
【例2-11】鍵盤輸入簡單數值矩陣。 32
【例2-12】利用表達式建立一個複數矩陣。 32
【例2-13】利用reshape函式建立數值矩陣。 32
【例2-14】利用diag函式建立對角矩陣。 33
【例2-15】利用M檔案創立新矩陣。 33
【例2-16】矩陣中冒號的使用。 34
【例2-17】提取矩陣的子矩陣。 34
【例2-18】矩陣的變換。 35
【例2-19】矩陣部分元素的提取。 36
【例2-20】利用函式建立邏輯類型數組。 37
【例2-21】IsNumeric函式使用實例。 38
【例2-22】與、或、非使用實例。 39
【例2-23】函式any和all的使用實例。 39
【例2-24】關係運算實例。 40
【例2-25】複雜關係運算。 40
【例2-26】字元串的合併與提取。 42
【例2-27】直接輸入建立二維字元串(數組)。 42
【例2-28】利用“str2mat”函式建立二維字
【例2-28】符串(數組)。 42
【例2-28】用法實例。 43
【例2-30】數制轉換函式實例。 44
【例2-31】strcmp和strncmp函式簡單套用比較。 45
【例2-32】套用“==”比較字元串。 45
【例2-33】字元串的分類。 46
【例2-34】strrep函式的套用。 46
【例2-35】strrep函式的套用。 46
【例2-36】FINDSTR函式的套用。 47
【例2-37】直接賦值法創建結構數組。 47
【例2-38】使用struct函式創建結構數組。 48
【例2-39】數據的獲取。 49
【例2-40】結構欄位數據的訪問。 50
【例2-41】對結構欄位數據進行運算。 51
【例2-42】結構操作函式的使用實例1。 52
【例2-43】結構數組大小。 52
【例2-44】創建元胞數組。 54
【例2-45】CELL函式創建元胞數組。 55
【例2-46】元胞數組中數據的獲得。 56
【例2-47】元胞中具體元素的訪問。 56
【例2-48】使用元胞的下標創建新的元胞數組。 57
【例2-49】元胞數組的刪除。 57
【例2-50】元胞數組的重塑。 58
【例2-51】cellfun函式實例。 59
【例2-52】顯示元胞數組內容函式celldisp
【例2-28】和cellplot使用實例。 60
【例2-53】元胞數組嵌套實例。 61
【例2-54】元胞數組轉化為數值數組。 62
【例2-55】數值數組轉化為元胞數組。 62
第3章 數值計算及數據分析 64
【例3-1】求矩陣的行列式、逆和秩。 65
【例3-2】矩陣A的lu分解實例。 68
【例3-3】矩陣A的LU分解實例。 68
【例3-4】QR分解實例。 69
【例3-5】QR分解實例。 70
【例3-6】向量範數的求解。 71
【例3-7】矩陣範數的求解。 72
【例3-8】求矩陣 的特徵值和
【例3-8】特徵向量。 73
【例3-9】求矩陣 的特徵值和
【例3-9】特徵向量。 73
【例3-10】用求特徵值的方法,求解方程
【例2-28】 。 74
【例3-11】奇異值分解實例。 75
【例3-12】奇異值分解實例。 75
【例3-13】cumprod函式套用示例。 77
【例3-14】cumsum函式套用示例。 77
【例3-15】cumtrapz函式套用示例。 78
【例3-16】max函式套用示例。 78
【例3-17】mean函式套用示例。 79
【例3-18】median函式套用示例。 79
【例3-19】prod函式套用示例。 80
【例3-20】sort函式套用示例。 80
【例3-21】std函式套用示例。 81
【例3-22】sum函式套用示例。 82
【例3-23】cov函式套用示例。 82
【例3-24】隨機生成一組數據,考察第四列和
【例2-28】其他列的相關性。 83
【例3-25】套用quad函式求數值積分。 83
【例3-26】套用trapz函式求數值積分。 84
【例3-27】積分 的精確值是2,
【例2-28】採用梯形積分法計算其近似值。 84
【例3-28】套用dblquad函式求重積分。 85
【例3-29】用triplequad函式求下面三重積分。 86
【例3-30】一維插值函式套用與比較。 87
【例3-31】三次樣條插值。 87
【例3-32】二維插值函式套用與比較。 88
【例3-33】三維插值示例。 90
【例3-34】曲線擬合的實現。 91
【例3-35】三次多項式擬合。 92
【例3-36】求函式 的傅立葉變換
【例2-28】及其逆變換。 93
【例3-37】產生一個正弦衰減曲線,進行快速傅立葉
【例2-28】變換,並畫出幅值(amplitude)圖、
【例2-28】相位(phase)圖、實部(real)圖和
【例2-28】虛部(image)圖。 95
【例3-38】設有初值問題。 97
【例3-39】已知一個線性系統的微分方程為。 97
【例3-40】求解L型薄膜的方程 , 為
【例2-28】Dirichlet邊界條件 。最後繪圖
【例2-28】顯示結果。 100
【例3-41】求解熱傳導方程。 101
【例3-42】求解波動方程。 102
【例3-43】一般矩陣與稀疏矩陣的轉換。 103
【例3-44】稀疏矩陣的創建。 104
【例3-45】稀疏矩陣的創建。 105
【例3-46】稀疏矩陣的創建。 105
【例3-47】稀疏矩陣的組合。 107
【例3-48】子矩陣的賦值。 107
【例3-49】稀疏矩陣S的交換。 108
【例3-50】對矩陣A,先用colperm函式獲取一個
【例2-28】交換矢量p,然後根據矢量p對矩陣A
【例2-28】的列按照非零元素的個數升序排序。 109
第4章 符號運算 110
【例4-1】sym函式的使用方法。 111
【例4-2】使用sym函式定義符號表達式
【例4-2】 。 111
【例4-3】使用syms函式定義字元變數和數組。 112
【例4-4】使用sym函式生成符號方程。 112
【例4-5】使用findsym函式尋找符號表達式中的
【例4-2】符號變數。 113
【例4-6】使用digits函式設定數值精度。 113
【例4-7】使用vpa函式進行可控精度計算。 114
【例4-8】使用sym函式進行數值型與符號型
【例4-8】變數的轉換。 114
【例4-9】使用sym函式直接生成符號矩陣。 116
【例4-10】用生成子矩陣的方法生成符號矩陣。 116
【例4-11】使用sym函式將數值矩陣轉換為
【例4-11】符號矩陣。 116
【例4-12】符號矩陣的四則運算。 118
【例4-13】符號數組的四則運算。 119
【例4-14】矩陣和數組的逆運算。 120
【例4-15】矩陣和數組的冪計算。 120
【例4-16】符號矩陣的秩。 121
【例4-17】符號矩陣的逆和行列式運算。 122
【例4-18】符號表達式求極限實例。 123
【例4-19】求符號表達式的微分實例。 123
【例4-20】計算符號積分實例。 124
【例4-21】計算符號的級數求和。 125
【例4-22】taylor級數圖像與原函式比較。 126
【例4-23】使用ezplot函式繪製符號函式的圖形。 127
【例4-24】繪製三維參量曲線。 128
【例4-25】繪製函式1 + cos(t)在區間[0,2n]上的
【例2-28】極坐標圖。 128
【例4-26】繪製符號函式的三維格線圖。 129
【例4-27】繪製符號函式的等高線圖。 130
【例4-28】繪製符號函式的不同顏色填充
【例2-28】等高線圖。 131
【例4-29】繪製函式的格線圖形及其
【例2-28】等高線圖。 132
【例4-30】繪製函式的三維彩色曲面圖。 133
【例4-31】繪製如下函式的曲面圖與等高線圖的
【例2-28】混合圖。 133
【例4-32】使用fplot函式繪製不同的圖形。 135
【例4-33】求解方程組u^2-v^2 = a^2, u + v = 1
【例2-28】a^2-2*a = 3。 137
【例4-34】通過矩陣除法來求解線性方程組。 137
【例4-35】dsolve函式的使用實例。 138
【例4-36】非線性方程返回多個結果的實例。 139
【例4-37】求解具有兩個初始條件y(0)=1和Dy(0)=0
【例2-28】的二階微分方程D2y=cos(2*x)-y。 139
【例4-38】符號表達式提取分子分母實例。 140
【例4-39】符號表達式的基本代數運算實例。 141
【例4-40】合併符號表達式同類項實例。 141
【例4-41】各種符號表達式的展開形式實例。 142
【例4-42】對符號表達式因式分解實例。 142
【例4-43】符號符合函式運算實例。 143
【例4-44】符號表達式反函式運算實例。 144
【例4-45】pretty函式使用實例。 144
【例4-46】horner函式使用實例。 144
【例4-47】simplify函式使用實例。 145
【例4-48】simple函式使用實例。 145
【例4-49】subexpr函式使用實例。 146
【例4-50】用符號變數s來代替默認的sigma。 146
【例4-51】subs函式使用實例。 147
【例4-52】創建能對任何輸入參數進行處理的
【例2-28】符號函式z=sin(x)/x。 147
第5章 MATLAB編程基礎 148
【例5-1】函式M檔案簡單示意。 150
【例5-2】help文本查看。 151
【例5-3】注釋行。 151
【例5-4】腳本檔案運行實例。 152
【例5-5】計算n與m的最低公倍數。 153
【例5-6】順序結構實例。 154
【例5-7】if…end實例。 155
【例5-8】if…else…end實例。 156
【例5-9】if…elseif…else…end實例。 157
【例5-10】switch…case…end實例。 158
【例5-11】for循環實例。 160
【例5-12】使用向量替代上例所示for循環。 161
【例5-13】for循環嵌套實例。 161
【例5-14】while循環程式實例。 162
【例5-15】while循環相互嵌套實例。 162
【例5-16】input函式實例。 163
【例5-17】break命令實例。 164
【例5-18】continue命令實例。 165
【例5-19】return命令實例。 165
【例5-20】pause命令實例。 166
【例5-21】子函式實例。 168
【例5-22】子函式的幫助文本查看實例。 169
【例5-23】私有函式實例。 170
【例5-24】嵌套函式的示意程式。 172
【例5-25】嵌套函式示例1。 172
【例5-26】嵌套函式示例2。 173
【例5-27】嵌套函式示例3。 173
【例5-28】嵌套函式中的函式句柄。 174
【例5-29】嵌套函式中的變數。 174
【例5-30】返回函式句柄的兩種函式的比較。 175
【例5-31】匿名函式的輸出實例。 180
【例5-32】匿名函式變數實例。 181
【例5-33】使用匿名函式解方程。 182
【例5-34】編寫一個套用全局變數的求算術
【例2-28】平均的函式。 183
【例5-35】nargin函式的初級使用方法。 185
【例5-36】使用nargin可以查找函式輸入
【例2-28】變數的個數。 185
【例5-37】nargin函式的高級使用方法。 186
【例5-38】varargin和varargout函式的使用舉例。 187
【例5-39】varargin和varargout的取值。 188
【例5-40】向嵌套函式中傳遞可變的參數。 188
【例5-41】使用mkdir建立目錄。 189
【例5-42】函式句柄作為輸入參數傳送給
【例2-28】另一個函式。 190
【例5-43】函式句柄在數組和結構體中的使用。 191
【例5-44】函式句柄的調用。 192
【例5-45】functions函式使用舉例。 193
【例5-46】func2str和str2func函式的使用。 193
【例5-47】isa和isequal函式的實例。 193
【例5-48】嵌套函式。 195
【例5-49】讀入數據示範。 195
【例5-50】稀疏矩陣與滿秩矩陣的存儲比較。 196
【例5-51】profiler實例。 207
【例5-52】try…catch示例。 209
【例5 53】try…catch嵌套示例。 209
【例5-54】lasterror函式實例。 210
【例5-55】警告實例。 214
【例5-56】查詢所有的警告。 214
第6章 MATLAB檔案操作 218
【例6-1】使用嚮導讀入檔案class.txt,該檔案中的
【例6-1】文本以Tab鍵分隔。 220
【例6-2】從檔案中創建變數實例。 222
【例6-3】導入數值文本數據。 223
【例6-4】導入有分隔設定的ASCII數據檔案。 224
【例6-5】導入帶有文本頭的檔案數據。 225
【例6-6】導入字母數值混合的數據。 226
【例6-7】分隔設定不是空格時的讀取。 226
【例6-8】用save命令導出陣列A。 227
【例6-9】指定分隔設定導出陣列A。 228
【例6-10】使用diary導出陣列。 228
【例6-11】用csvwrite函式導出矩陣數據。 229
【例6-12】使用whos–file命令預覽檔案內容。 230
【例6-13】load命令實例1。 231
【例6-14】load命令實例2。 231
【例6-15】load命令實例3。 231
【例6-16】load命令實例4。 231
【例6-17】save命令實例1。 232
【例6-18】save命令實例2。 233
【例6-19】save命令實例3。 233
【例6-20】imread函式實例。 234
【例6-21】imwrite函式實例。 235
【例6-22】將一個MATLAB圖像序列保存為
【例2-28】一個AVI格式檔案。 238
【例6-23】xlsfinfo函式實例。 239
【例6-24】xlswrite函式實例。 240
【例6-25】xlsread函式實例。 240
【例6-26】wklfinfo函式實例。 241
【例6-27】wklwrite函式實例。 241
【例6-28】wklread函式實例。 241
【例6-29】fopen函式實例。 242
【例6-30】fread函式實例1。 243
【例6-31】fread函式實例2。 244
【例6-32】fread函式實例3。 245
【例6-33】fwrite函式實例。 245
【例6-34】fgetl函式實例。 245
【例6-35】fscanf函式實例。 246
【例6-36】格式化寫入文本檔案實例。 247
【例6-37】格式化讀取文本檔案實例。 248
【例6-38】檔案指針實例。 249
【例6-39】用feof函式檢測檔案末尾。 250
第7章 數據可視化 251
【例7-1】使用圖形表示連續調製波形。 252
【例7-2】繪製一個簡單的雙軸對數圖形。 254
【例7-3】根據向量或矩陣繪製雙軸對數圖形。 254
【例7-4】根據數據向量來繪製單軸對數圖形。 255
【例7-5】根據函式plotyy來繪製多軸標度圖形。 256
【例7-6】使用bar函式與barh函式繪圖。 258
【例7-7】繪製面積圖。 259
【例7-8】繪製二維餅形圖。 260
【例7-9】繪製隨機生成的常態分配數據的
【例2-28】直方圖。 261
【例7-10】使用stem繪製離散圖形。 262
【例7-11】使用stairs函式繪製正弦波的
【例2-28】階躍圖形。 262
【例7-12】繪製矩陣的本徵值的羅盤圖。 263
【例7-13】用羽狀圖來繪製theta的方向變化。 264
【例7-14】繪製函式 的梯度域。 264
【例7-15】繪製peaks函式的等高線。 266
【例7-16】繪製三維螺旋線。 267
【例7-17】繪製函式 的曲面圖。 268
【例7-18】繪製peaks函式的曲面圖。 269
【例7-19】使用bar3和ba3h函式繪製條形圖。 269
【例7-20】使用pie3函式繪製三維餅形圖。 270
【例7-21】使用stem3函式繪製三維離散圖。 270
【例7-22】使用contour3函式繪製等高線圖形。 271
【例7-23】使用xlabel和ylaebl命令給圖形添加
【例2-28】坐標軸標註。 273
【例7-24】使用text函式對圖像注釋。 274
【例7-25】使用legend函式進行圖形的圖例標註。 276
【例7-26】使用grid函式進行圖形格線控制。 277
【例7-27】view函式的使用。 278
【例7-28】顏色表的使用。 279
【例7-29】生成一個曲面圖,之後添加光源。 280
第8章 MATLAB在數字圖像處理中的套用 282
【例8-1】imfinfo函式的套用。 288
【例8-2】顯示灰度圖像。 289
【例8-3】顯示二值圖像。 290
【例8-4】imwrite函式套用。 291
【例8-5】對不同類型的圖像進行轉化。 292
【例8-6】用OSTU方法對灰度圖像實現
【例8-6】閾值分割。 293
【例8-7】在水平和豎直方向移動圖像。 296
【例8-8】對圖像分別進行水平鏡像和垂直
【例8-6】鏡像變換。 297
【例8-9】縮小圖像。 299
【例8-10】旋轉圖像。 300
【例8-11】剪下圖像。 301
【例8-12】生成大小為100100的圖像,然後分別
【例2-28】進行平移的DFT和不平移的DFT。 307
【例8-13】使用fft2函式驗證離散傅立葉變換的
【例2-28】平移特性。 307
【例8-14】離散傅立葉變換的旋轉特性。 308
【例8-15】對baboon圖像進行二維DCT變換,
【例2-28】查看其能量譜。 311
【例8-16】圖像抑噪。 312
【例8-17】二維離散沃爾什變換。 314
【例8-18】快速沃爾什變換程式。 315
【例8-19】baboon圖像。 316
【例8-20】圖像的radon變換與圖像重構。 318
【例8-21】繪製圖像的輪廓線和直方圖。 321
【例8-22】非線性動態動態範圍調整: 323
【例8-23】imadjust函式變換示例。 324
【例8-24】直方圖均衡化示例。 325
【例8-25】鄰域平均法濾波。 328
【例8-26】維納濾波示例。 329
【例8-27】中值濾波函式medfilt2示例。 330
【例8-29】巴特沃思濾波器低通濾波圖像。 332
第9章 MATLAB最佳化問題套用 334
【例9-1】在區間(0,2π)上求函式sin(x)的最小值。 339
【例9-2】對邊長為3m的正方形鐵板,在四個角處
【例2-2】剪去相等的正方形以製成方形無蓋水槽,
【例9-2】問如何剪法使水槽的容積最大? 339
【例9-3】求函式的最小值。 344
【例9-4】將上例中的banana方程增加一個參數,
【例9-2】並求最小值。 344
【例9-5】求函式的最小值。 346
【例9-6】求公式的最小值。 349
【例9-7】求函式f(x) = –x1x2x3的最小值。 353
【例9-8】確定最好的採購方案。 357
【例9-9】計算x為何值時,目標函式取到
【例9-8】最大值中的最小值 359
【例9-10】通過在3附近搜尋sin函式的0值來
【例2-28】計算π的值。 361
【例9-11】在1和2之間求解cos=0的根。 361
【例9-12】求解函式的根。 361
【例9-13】求解方程組的根,其中包含兩個
【例2-28】未知數兩個方程。 363
【例9-14】計算符合公式的矩陣x的值。 364
【例9-15】一個4×2問題的無約束最小二乘解同
【例2-28】非負最小二乘解的比較。 367
【例9-16】求超定系統C·x = d的最小二乘解,約束
【例2-28】條件為A·x≤b,lb≤x≤ub。 368
【例9-17】對公式進行最小化最佳化。 370
【例9-18】針對給出的xdata和ydata數據,擬合
【例2-28】指數式衰減方程。 372
【例9-19】計算MATLAB系統自帶lincontest6
【例2-28】函式在約束條件下的最小值。 374
【例9-20】求MATLAB自帶的測試函式De Jong
【例2-28】第五函式最小值。 377
【例9-21】在給定不等式約束和下邊界條件
【例2-28】約束下求系統自帶測試函式lincontest6
【例2-28】的最小值。 383
【例9-22】在無約束條件下,用遺傳算法求MATLAB
【例2-28】自帶測試函式shufcn的最小值。 384
【例9-23】使用Optimization Tool以fmincon
【例2-28】求解器對下面二次方程求解最小值。 386
第10章 MATLAB在信號處理中的套用 389
【例10-1】運行MATLAB命令產生矩形
【例10-1】脈衝信號。 392
【例10-2】使用MATLAB命令產生對稱三角波。 393
【例10-3】計算
【例2-28】的Z反變換。 396
【例10-4】求餘弦序列的離散傅立葉變換矩陣。 398
【例10-5】besselap函式使用舉例。 405
【例10-6】buttap函式使用舉例。 406
【例10-7】cheb1ap函式使用舉例舉例。 406
【例10-8】cheb2ap函式舉例。 407
【例10-9】ellipap舉例。 408
【例10-10】用衝激回響不變法設計切比
【例02-28】數雪夫Ⅰ型字低通濾波器。 409
【例10-11】用雙線性變換法設計一個巴特沃思數
【例2-028】字低通濾波器。 410
【例10-12】用雙線性變換法設計一個數字帶通濾
【例02-28】波器。 411
【例10-13】調用濾波器完全設計函式設計帶通切比
【例02-28】雪夫Ⅰ型數字濾波器。 412
【例10-14】運用yulewalk方法設計一多通帶濾波
【例20-28】器,並繪製相應的頻率回響曲線。 413
【例10-15】用maxflat函式設計一個通用巴特沃思低
【例20-28】通濾波器。 414
【例10-16】設計一個50階的FIR帶通濾波器。 417
【例10-17】用窗函式法設計多通帶濾波器。 418
【例10-18】設計一個40階低通濾波器,並且繪製
【例20-28】理想頻率回響和實際頻率回響圖。 419
第11章 Simulink仿真 421
【例11-1】演示注釋文字的使用方法。 433
【例11-2】簡單系統仿真。 446
【例11-3】人口變化離散系統模型仿真。 448
【例11-4】笨豬跳系統的仿真實例。 450
【例11-5】子系統模型的第1種創建方法實例。 455
【例11-6】子系統模型的組合已有的模組創建
【例2-28】方法實例。 455
【例11-7】使能子系統設計實例。 456
【例11-8】利用觸發子系統獲取零階保持的採樣
【例2-28】信號實例。 457
【例11-9】我們以MATLAB自帶的sldemo_
【例2-28】househeat.mdl來說明子系統的封裝。 459
【例11-10】非等溫CSTR系統仿真實例。 471
第12章 圖形用戶界面GUI設計 473
【例12-1】獲得圖形對象句柄。 475
【例12-2】使用uicontrol函式建立控制項。 489
【例12-3】使用guide來創建一個圖形
【例12-3】用戶界面。 495
第13章 MATLAB與Office 500
【例13 1】Evaluate Cell示例。 508
【例13 2】Evaluate Calc Zone示例。 509
【例13 3】輸出單元和輸入單元。 511
【例13 4】單元組。 513
【例13 5】把輸入單元嵌在文本中。 514
第14章 MATLAB應用程式接口 525
【例14-1】創建類似於其他程式語言中簡單的
【例2-28】“hello,world!”程式“hello, MEX!”,
【例2-28】在命令行中輸出hello, MEX!語句。 531
【例14-2】MATLAB中在有輸入輸出參數的
【例2-28】情況下MEX檔案實例。 532
【例14-3】將C++程式mexcpp.cpp編譯為MEX
【例2-28】檔案。 533
【例14-4】在C/C++中調用MATLAB計算引擎
【例2-28】實例。 538
【例14-5】使用MATLAB編譯器編譯magicsquare.m,
【例2-28】並且創建獨立C語言應用程式
【例2-28】magicsquare.exe,最後發布給
【例2-28】其他用戶。 546
【例14-6】只由M檔案作為源檔案來進行編譯。 549
【例14-7】舉例說明混合調用M檔案和
【例14-7】C語言代碼。 549
【例14-8】用實例說明怎樣編寫調用一個編譯過的
【例2-28】M檔案。 553