本書編寫的目的是讓讀者全面了解MATLAB程序設計的基礎知識,從而能夠掌握基本的MATLAB程序開發(fā),以適應現(xiàn)代工程技術(shù)的發(fā)展。本書針對普通高校廣大學生和教師的教學需要,從*簡單的MATLAB程序設計開始介紹,涉及矩陣運算、圖形顯示、概率統(tǒng)計、圖像處理和插值擬合等內(nèi)容,覆蓋面廣,有利于促進廣大MATLAB使用者之間的交流與學習。
本書主要介紹了MATLAB程序設計的一些基礎知識。全書共分8章,涵蓋的主要內(nèi)容有MATLAB編程環(huán)境、MATLAB矩陣及其運算、MATLAB繪圖、MATLAB程序設計、MATLAB數(shù)據(jù)分析及應用、MATLAB數(shù)據(jù)結(jié)構(gòu)、MATLAB圖形用戶界面設計和MATLAB在圖像處理中的應用。本書系統(tǒng)地介紹了MATLAB程序設計所需要的基本知識,并給出了交互設計軟件的方法,*后還給出了MATLAB在圖像處理中的應用,為后續(xù)MATLAB的實際應用做好鋪墊。為了方便教師教學和讀者自我檢測,本書每章*后都特意給出了習題供讀者實戰(zhàn)演練。另外,本書還配備了專業(yè)的教學PPT。以方便相關院校教學使用。
本書可以作為通信、電子信息等專業(yè)的高年級本科生、研究生及教師的教材和參考書,也可供從事相關領域研究的科技人員、工程技術(shù)人員及MATLAB愛好者學習和參考。
本書涵蓋的內(nèi)容
MATLAB編程環(huán)境
MATLAB矩陣及其運算
MATLAB繪圖
MATLAB程序設計
MATLAB數(shù)據(jù)分析及應用
MATLAB數(shù)據(jù)結(jié)構(gòu)
MATLAB圖形用戶界面設計
MATLAB在圖像處理中的應用
MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學軟件。它將數(shù)值分析、矩陣計算、科學數(shù)據(jù)可視化及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工程設計及必須進行有效數(shù)值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設計語言的編輯模式,代表了當今國際科學計算軟件的先進水平。與其他計算機語言相比,MATLAB更加接近人們書寫計算公式的思維方式,其程序編寫就像是在演算紙上列出公式進行求解的過程,這使人們擺脫了許多重復、復雜的機械性編程細節(jié),而把注意力集中在創(chuàng)造性問題上,用盡可能短的時間得到有價值的結(jié)果。MATLAB還具有編程簡單、節(jié)省時間、提高效率、易學易懂、功能強大、適用范圍廣、可移植性強和開放性強等特點,是在校大學生進行科學研究必須掌握的基本技能。
本書作為介紹MATLAB編程技術(shù)的基礎教科書,主要為MATLAB初學者詳細介紹了MATLAB的基本功能、函數(shù)格式與調(diào)用、編程方法與程序運行等內(nèi)容,并以高等數(shù)學、線性代數(shù)、概率論、數(shù)理統(tǒng)計、優(yōu)化問題、數(shù)據(jù)處理、系統(tǒng)仿真等學科為背景,精心選取了實例和常見的案例來講解MATLAB的具體操作方法,從而讓讀者能夠輕松自如地掌握MATLAB的編程方法和技巧,為從事科學研究和相關行業(yè)的開發(fā)打下良好的基礎。本書內(nèi)容涵蓋了MATLAB在各學科通用的基礎內(nèi)容,充分展現(xiàn)了MATLAB的各項常用功能,而且敘述簡明扼要,深入淺出,還提供了豐富的實例及習題,是廣大高校理工科專業(yè)的學生和科研愛好者不可多得的MATLAB編程基礎讀物。
本書特色
1.內(nèi)容豐富,結(jié)構(gòu)合理
本書涵蓋了MATALB程序設計所涉及的基本概念和矩陣運算、繪圖、概率統(tǒng)計、數(shù)據(jù)分析、數(shù)據(jù)結(jié)構(gòu)、圖形用戶界面、圖像處理和插值擬合等內(nèi)容,可以滿足大部分MATLAB初學者的學習需求。
2.實例豐富,注重實用
本書編寫時考慮了高等院校相關專業(yè)的專業(yè)基礎和教學需求,講解時結(jié)合MATLAB程序設計的相關理論,并提供了大量的實例和案例來講述重要知識點和相關注意事項,有很強的實用性。
3.由淺入深,循序漸進
本書編寫遵循由淺入深,循序漸進的原則,前面的章節(jié)可以讓讀者順利踏入MATLAB的大門,后面的章節(jié)則可以讓讀者逐步深入到相關專業(yè)技術(shù)領域,這樣的安排使得讀者的學習曲線平滑,梯度合理,學習效果好。
4.語言通俗,圖文并茂
本書用通俗易懂的語言講解各個知識點,而且在講解過程中提供了大量的圖示以幫助讀者直觀地理解所學知識。這可以讓讀者快速上手,迅速掌握MATALB知識。
5.提供大量的課后習題
本書每章后都提供了豐富的習題,這既可以方便相關院校的教學需求,也可以供MATLAB自學人員和愛好者鞏固所學知識。這些習題和每章內(nèi)容密切關聯(lián),讀者只要掌握了每章內(nèi)容,稍加努力就能解出這些題目。
6.提供教學PPT
為了方便相關院校的老師教學和學生學習,筆者專門為本書制作了專業(yè)的教學課件(PPT),需要的讀者可以按照本文后提供的獲取方式獲取。
本書內(nèi)容介紹
本書共分8章,主要內(nèi)容概括如下:
第1章介紹MATLAB的編程環(huán)境,主要包括MATLAB的特點、安裝、編程環(huán)境及一些通用命令等。
第2章介紹MATLAB矩陣及其運算,主要包括MATLAB程序設計語言中的變量、數(shù)據(jù)、矩陣的定義及基本操作等。
第3章介紹MATLAB繪圖,不僅對MATLAB程序中的二維繪圖和三維繪圖進行了詳細介紹,還介紹了如何設置曲線樣式、圖形標注、坐標控制、圖形的可視化編輯和圖形窗口的分割等。
第4章介紹MATLAB環(huán)境下進行程序設計的相關知識,主要對M文件、程序控制結(jié)構(gòu)、函數(shù)文件、全局變量、局部變量和程序調(diào)試等問題進行了介紹。
第5章介紹MATLAB數(shù)據(jù)分析及應用,主要介紹了MATLAB在線性代數(shù)、數(shù)據(jù)處理、數(shù)值微積分和常微分方程求解等方面的數(shù)據(jù)分析方法及應用。
第6章介紹MATLAB數(shù)據(jù)結(jié)構(gòu),主要介紹了多維數(shù)組、結(jié)構(gòu)體、細胞和字符串4種數(shù)據(jù)類型的構(gòu)造和應用。
第7章介紹MATLAB圖形用戶界面設計,主要對GUI進行了簡單介紹,然后介紹了GUI開發(fā)環(huán)境GUIDE及其組成部分的用途和使用方法,并給出了GUI中菜單和對話框等的設計,還給出了實現(xiàn)GUI的設計實例。
第8章介紹MATLAB在圖像處理中的應用,主要介紹了圖像的讀取、顯示和寫入,并對簡單的圖像處理進行了介紹。
本書讀者定位
本書可作為高等院校理工科專業(yè)本科生或研究生的課程教材及教學參考用書,亦可作為MATLAB愛好者和相關研究人員的參考資料。本書要求讀者最好具備信號與系統(tǒng)、高等數(shù)學和線性代數(shù)等課程的基本知識。
本書配套資源獲取方式
本書涉及的源程序和教學PPT等資源需要讀者自行下載。請到清華大學出版社的網(wǎng)站上搜索到本書頁面,然后在頁面上的“資源下載”處下載。讀者也可以在MATLAB中文論壇上的本書頁面上下載。
因作者水平所限,本書恐有疏漏之處,懇請廣大讀者批評指正。
編者
劉帥奇,畢業(yè)于北京交通大學。有8年以上的MATLAB應用經(jīng)驗。精通MATLAB算法開發(fā),并對程序設計有獨到的見解。榮獲省級和全國數(shù)學建模競賽三等獎2項、二等獎1項,還獲得了編程和其他類競賽獎1項。已發(fā)表和錄用論文20多篇,其中包括7篇SCI檢索期刊論文,9篇EI檢索期刊論文。主持和參與相關項目10余個。目前主要從事多維信號處理、圖像處理、人工智能、信號分析、故障診斷和算法開發(fā)等相關方面的研究。
李會雅,畢業(yè)于河北大學通信工程專業(yè)。長期從事通信工程專業(yè)一線教學。不僅精通MATLAB科學計算,還對目前市面上的相關教材多有研究,認為目前的教材對于普通本科院校來說不盡完善。目前的研究方向為多維信號處理。
趙杰,畢業(yè)于河北工業(yè)大學,F(xiàn)任河北大學電子信息工程學院常務副院長。精通MATLAB數(shù)值計算、小波分析、圖像處理。長期從事圖像處理算法的研究,并對基于MATLAB的圖像處理算法有深入研究。先后多次參與國家自然科學基金項目等。目前研究方向為圖像處理和計算視覺。
第1章 MATLAB編程環(huán)境 1
1.1 MATLAB概述 1
1.1.1 MATLAB發(fā)展歷程 1
1.1.2 MATLAB主要功能 2
1.1.3 MATLAB特點 2
1.2 MATLAB的組成部分 3
1.2.1 MATLAB主要組成部分 4
1.2.2 MATLAB重要部件 4
1.3 MATLAB的安裝 5
1.4 MATLAB開發(fā)環(huán)境 9
1.4.1 MATLAB軟件開發(fā)環(huán)境 9
1.4.2 MATLAB搜索路徑 15
1.4.3 MATLAB變量保存 16
1.5 M文件的使用 17
1.6 常用命令 20
1.7 本章小結(jié) 23
1.8 習題 23
第2章 MATLAB矩陣及其運算 24
2.1 變量和數(shù)據(jù)操作 24
2.1.1 變量與賦值 24
2.1.2 預定義變量 25
2.1.3 內(nèi)存變量的管理 26
2.1.4 MATLAB常用數(shù)學函數(shù) 32
2.1.5 數(shù)據(jù)的輸出格式 34
2.2 MATLAB向量與矩陣 35
2.2.1 向量的建立及拆分 35
2.2.2 矩陣的建立及拆分 38
2.2.3 矩陣元素的提取與替換 44
2.2.4 特殊矩陣 48
2.3 MATLAB矩陣相關運算 51
2.3.1 算術(shù)運算 51
2.3.2 關系運算 55
2.3.3 邏輯運算 56
2.4 矩陣函數(shù) 59
2.4.1 對角陣與三角陣 59
2.4.2 矩陣的轉(zhuǎn)置與旋轉(zhuǎn) 61
2.4.3 矩陣的逆與偽逆 63
2.4.4 方陣的行列式 64
2.4.5 矩陣的秩與跡 64
2.4.6 向量和矩陣的范數(shù) 65
2.4.7 矩陣的條件數(shù) 67
2.4.8 矩陣的特征值與特征向量 67
2.5 本章小結(jié) 68
2.6 習題 68
第3章 MATLAB繪圖 69
3.1 二維數(shù)據(jù)曲線圖 69
3.1.1 繪制單根二維曲線 69
3.1.2 繪制多根二維曲線 74
3.1.3 設置曲線樣式 80
3.1.4 圖形標注 84
3.1.5 坐標控制 88
3.1.6 邊界和網(wǎng)格控制 94
3.1.7 圖形窗口的分割 95
3.1.8 圖形的可視化編輯 95
3.2 其他二維圖形 103
3.2.1 其他繪圖函數(shù) 104
3.2.2 餅圖 106
3.2.3 條形圖 108
3.2.4 直方圖 109
3.2.5 面積圖 110
3.2.6 散點圖 110
3.2.7 排列圖 111
3.2.8 羅盤圖 111
3.2.9 羽毛圖 112
3.2.10 矢量圖 112
3.2.11 桿型圖 113
3.2.12 階梯圖 114
3.3 三維圖形 114
3.3.1 三維曲線 114
3.3.2 三維表面圖的繪制 118
3.3.3 三維切片圖的繪制 119
3.3.4 常用三維圖形 119
3.3.5 其他三維圖形 122
3.4 本章小結(jié) 124
3.5 習題 124
第4章 MATLAB程序設計 126
4.1 M文件 126
4.1.1 M文件的分類 126
4.1.2 M文件的建立與打開 129
4.2 程序控制結(jié)構(gòu) 131
4.2.1 順序結(jié)構(gòu) 131
4.2.2 選擇結(jié)構(gòu) 135
4.2.3 循環(huán)結(jié)構(gòu) 140
4.3 函數(shù)文件 145
4.3.1 函數(shù)文件的基本結(jié)構(gòu) 145
4.3.2 函數(shù)的調(diào)用 146
4.3.3 函數(shù)參數(shù)的可調(diào)性 147
4.3.4 全局變量與局部變量 150
4.4 程序舉例 152
4.5 程序調(diào)試 158
4.5.1 程序調(diào)試概述 158
4.5.2 調(diào)試工具 159
4.5.3 調(diào)試命令 161
4.6 本章小結(jié) 162
4.7 習題 162
第5章 MATLAB數(shù)據(jù)分析及應用 164
5.1 數(shù)據(jù)統(tǒng)計處理 164
5.1.1 最大值和最小值 164
5.1.2 求和與求積 166
5.1.3 平均值和中值 169
5.1.4 累加和與累乘積 171
5.1.5 標準方差與相關系數(shù) 173
5.1.6 排序 176
5.2 數(shù)據(jù)插值 179
5.2.1 一維數(shù)據(jù)插值 179
5.2.2 二維數(shù)據(jù)插值 182
5.3 離散傅里葉變換 185
5.3.1 離散傅里葉變換算法簡介 185
5.3.2 離散傅里葉變換的實現(xiàn) 186
5.4 多項式計算 188
5.4.1 多項式的四則運算 188
5.4.2 多項式的導函數(shù) 191
5.4.3 多項式的求值 191
5.4.4 多項式求根 192
5.5 線性方程組求解 193
5.5.1 線性方程組的直接求解算法 193
5.5.2 線性方程組的迭代求解算法 195
5.6 曲線擬合 199
5.7 常微分方程初值問題的數(shù)值解法 201
5.8 最優(yōu)化問題求解 203
5.8.1 無約束最優(yōu)化問題求解 203
5.8.2 有約束最優(yōu)化問題求解 204
5.8.3 線性規(guī)劃問題求解 205
5.9 數(shù)值積分 206
5.9.1 數(shù)值積分基本原理 206
5.9.2 數(shù)值積分的實現(xiàn)方法 207
5.9.3 多重定積分的數(shù)值求解 208
5.10 數(shù)值微分 208
5.10.1 數(shù)值差分與差商 208
5.10.2 數(shù)值微分的實現(xiàn) 209
5.11 本章小結(jié) 210
5.12 習題 211
第6章 MATLAB數(shù)據(jù)結(jié)構(gòu) 213
6.1 多維數(shù)組 213
6.1.1 多維數(shù)組的表現(xiàn)形式 213
6.1.2 多維數(shù)組的創(chuàng)建 214
6.1.3 多維數(shù)組的轉(zhuǎn)換 217
6.2 結(jié)構(gòu)體 219
6.2.1 結(jié)構(gòu)體構(gòu)造和賦值 219
6.2.2 結(jié)構(gòu)體的使用 225
6.2.3 結(jié)構(gòu)體的嵌套 227
6.3 細胞 228
6.3.1 細胞數(shù)組的創(chuàng)建 228
6.3.2 細胞數(shù)組的訪問 230
6.3.3 細胞數(shù)組的顯示 231
6.4 字符串 233
6.4.1 字符串構(gòu)造 233
6.4.2 字符串函數(shù) 234
6.5 本章小結(jié) 241
6.6 習題 242
第7章 MATLAB圖形用戶界面設計 243
7.1 圖形用戶句柄 243
7.2 圖形用戶界面開發(fā)環(huán)境 247
7.2.1 圖形用戶界面設計窗口 247
7.2.2 常用的用戶界面設計工具 250
7.3 菜單設計 258
7.3.1 建立用戶菜單 258
7.3.2 菜單對象常用屬性 263
7.3.3 快捷菜單 265
7.4 對話框設計 266
7.4.1 公共對話框 266
7.4.2 MATLAB專用對話框 268
7.5 GUI的控件簡介 271
7.5.1 常用控件簡述 271
7.5.2 控件的操作 274
7.6 圖形用戶界面開發(fā)舉例 278
7.7 本章小結(jié) 289
7.8 習題 289
第8章 MATLAB在圖像處理中的應用 291
8.1 讀取和顯示圖像 291
8.1.1 讀取圖片 291
8.1.2 顯示圖片 295
8.2 圖像的直方圖均衡 296
8.2.1 直方圖 296
8.2.2 直方圖均衡 300
8.3 灰度拉伸 303
8.4 圖像濾波 306
8.4.1 均值濾波 306
8.4.2 中值濾波 308
8.5 閾值分割與二值化 310
8.6 形態(tài)學算子 311
8.7 圖像變換 318
8.8 本章小結(jié) 321
8.9 習題 321