本書編寫的目的是讓讀者全面了解MATLAB程序設(shè)計的基礎(chǔ)知識,從而能夠掌握基本的MATLAB程序開發(fā),以適應(yīng)現(xiàn)代工程技術(shù)的發(fā)展。本書針對普通高校廣大學(xué)生和教師的教學(xué)需要,從*簡單的MATLAB程序設(shè)計開始介紹,涉及矩陣運算、圖形顯示、概率統(tǒng)計、圖像處理和插值擬合等內(nèi)容,覆蓋面廣,有利于促進廣大MATLAB使用者之間的交流與學(xué)習(xí)。
本書主要介紹了MATLAB程序設(shè)計的一些基礎(chǔ)知識。全書共分8章,涵蓋的主要內(nèi)容有MATLAB編程環(huán)境、MATLAB矩陣及其運算、MATLAB繪圖、MATLAB程序設(shè)計、MATLAB數(shù)據(jù)分析及應(yīng)用、MATLAB數(shù)據(jù)結(jié)構(gòu)、MATLAB圖形用戶界面設(shè)計和MATLAB在圖像處理中的應(yīng)用。本書系統(tǒng)地介紹了MATLAB程序設(shè)計所需要的基本知識,并給出了交互設(shè)計軟件的方法,*后還給出了MATLAB在圖像處理中的應(yīng)用,為后續(xù)MATLAB的實際應(yīng)用做好鋪墊。為了方便教師教學(xué)和讀者自我檢測,本書每章*后都特意給出了習(xí)題供讀者實戰(zhàn)演練。另外,本書還配備了專業(yè)的教學(xué)PPT。以方便相關(guān)院校教學(xué)使用。
本書可以作為通信、電子信息等專業(yè)的高年級本科生、研究生及教師的教材和參考書,也可供從事相關(guān)領(lǐng)域研究的科技人員、工程技術(shù)人員及MATLAB愛好者學(xué)習(xí)和參考。
本書涵蓋的內(nèi)容
MATLAB編程環(huán)境
MATLAB矩陣及其運算
MATLAB繪圖
MATLAB程序設(shè)計
MATLAB數(shù)據(jù)分析及應(yīng)用
MATLAB數(shù)據(jù)結(jié)構(gòu)
MATLAB圖形用戶界面設(shè)計
MATLAB在圖像處理中的應(yīng)用
MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計及必須進行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言的編輯模式,代表了當(dāng)今國際科學(xué)計算軟件的先進水平。與其他計算機語言相比,MATLAB更加接近人們書寫計算公式的思維方式,其程序編寫就像是在演算紙上列出公式進行求解的過程,這使人們擺脫了許多重復(fù)、復(fù)雜的機械性編程細(xì)節(jié),而把注意力集中在創(chuàng)造性問題上,用盡可能短的時間得到有價值的結(jié)果。MATLAB還具有編程簡單、節(jié)省時間、提高效率、易學(xué)易懂、功能強大、適用范圍廣、可移植性強和開放性強等特點,是在校大學(xué)生進行科學(xué)研究必須掌握的基本技能。
本書作為介紹MATLAB編程技術(shù)的基礎(chǔ)教科書,主要為MATLAB初學(xué)者詳細(xì)介紹了MATLAB的基本功能、函數(shù)格式與調(diào)用、編程方法與程序運行等內(nèi)容,并以高等數(shù)學(xué)、線性代數(shù)、概率論、數(shù)理統(tǒng)計、優(yōu)化問題、數(shù)據(jù)處理、系統(tǒng)仿真等學(xué)科為背景,精心選取了實例和常見的案例來講解MATLAB的具體操作方法,從而讓讀者能夠輕松自如地掌握MATLAB的編程方法和技巧,為從事科學(xué)研究和相關(guān)行業(yè)的開發(fā)打下良好的基礎(chǔ)。本書內(nèi)容涵蓋了MATLAB在各學(xué)科通用的基礎(chǔ)內(nèi)容,充分展現(xiàn)了MATLAB的各項常用功能,而且敘述簡明扼要,深入淺出,還提供了豐富的實例及習(xí)題,是廣大高校理工科專業(yè)的學(xué)生和科研愛好者不可多得的MATLAB編程基礎(chǔ)讀物。
本書特色
1.內(nèi)容豐富,結(jié)構(gòu)合理
本書涵蓋了MATALB程序設(shè)計所涉及的基本概念和矩陣運算、繪圖、概率統(tǒng)計、數(shù)據(jù)分析、數(shù)據(jù)結(jié)構(gòu)、圖形用戶界面、圖像處理和插值擬合等內(nèi)容,可以滿足大部分MATLAB初學(xué)者的學(xué)習(xí)需求。
2.實例豐富,注重實用
本書編寫時考慮了高等院校相關(guān)專業(yè)的專業(yè)基礎(chǔ)和教學(xué)需求,講解時結(jié)合MATLAB程序設(shè)計的相關(guān)理論,并提供了大量的實例和案例來講述重要知識點和相關(guān)注意事項,有很強的實用性。
3.由淺入深,循序漸進
本書編寫遵循由淺入深,循序漸進的原則,前面的章節(jié)可以讓讀者順利踏入MATLAB的大門,后面的章節(jié)則可以讓讀者逐步深入到相關(guān)專業(yè)技術(shù)領(lǐng)域,這樣的安排使得讀者的學(xué)習(xí)曲線平滑,梯度合理,學(xué)習(xí)效果好。
4.語言通俗,圖文并茂
本書用通俗易懂的語言講解各個知識點,而且在講解過程中提供了大量的圖示以幫助讀者直觀地理解所學(xué)知識。這可以讓讀者快速上手,迅速掌握MATALB知識。
5.提供大量的課后習(xí)題
本書每章后都提供了豐富的習(xí)題,這既可以方便相關(guān)院校的教學(xué)需求,也可以供MATLAB自學(xué)人員和愛好者鞏固所學(xué)知識。這些習(xí)題和每章內(nèi)容密切關(guān)聯(lián),讀者只要掌握了每章內(nèi)容,稍加努力就能解出這些題目。
6.提供教學(xué)PPT
為了方便相關(guān)院校的老師教學(xué)和學(xué)生學(xué)習(xí),筆者專門為本書制作了專業(yè)的教學(xué)課件(PPT),需要的讀者可以按照本文后提供的獲取方式獲取。
本書內(nèi)容介紹
本書共分8章,主要內(nèi)容概括如下:
第1章介紹MATLAB的編程環(huán)境,主要包括MATLAB的特點、安裝、編程環(huán)境及一些通用命令等。
第2章介紹MATLAB矩陣及其運算,主要包括MATLAB程序設(shè)計語言中的變量、數(shù)據(jù)、矩陣的定義及基本操作等。
第3章介紹MATLAB繪圖,不僅對MATLAB程序中的二維繪圖和三維繪圖進行了詳細(xì)介紹,還介紹了如何設(shè)置曲線樣式、圖形標(biāo)注、坐標(biāo)控制、圖形的可視化編輯和圖形窗口的分割等。
第4章介紹MATLAB環(huán)境下進行程序設(shè)計的相關(guān)知識,主要對M文件、程序控制結(jié)構(gòu)、函數(shù)文件、全局變量、局部變量和程序調(diào)試等問題進行了介紹。
第5章介紹MATLAB數(shù)據(jù)分析及應(yīng)用,主要介紹了MATLAB在線性代數(shù)、數(shù)據(jù)處理、數(shù)值微積分和常微分方程求解等方面的數(shù)據(jù)分析方法及應(yīng)用。
第6章介紹MATLAB數(shù)據(jù)結(jié)構(gòu),主要介紹了多維數(shù)組、結(jié)構(gòu)體、細(xì)胞和字符串4種數(shù)據(jù)類型的構(gòu)造和應(yīng)用。
第7章介紹MATLAB圖形用戶界面設(shè)計,主要對GUI進行了簡單介紹,然后介紹了GUI開發(fā)環(huán)境GUIDE及其組成部分的用途和使用方法,并給出了GUI中菜單和對話框等的設(shè)計,還給出了實現(xiàn)GUI的設(shè)計實例。
第8章介紹MATLAB在圖像處理中的應(yīng)用,主要介紹了圖像的讀取、顯示和寫入,并對簡單的圖像處理進行了介紹。
本書讀者定位
本書可作為高等院校理工科專業(yè)本科生或研究生的課程教材及教學(xué)參考用書,亦可作為MATLAB愛好者和相關(guān)研究人員的參考資料。本書要求讀者最好具備信號與系統(tǒng)、高等數(shù)學(xué)和線性代數(shù)等課程的基本知識。
本書配套資源獲取方式
本書涉及的源程序和教學(xué)PPT等資源需要讀者自行下載。請到清華大學(xué)出版社的網(wǎng)站上搜索到本書頁面,然后在頁面上的“資源下載”處下載。讀者也可以在MATLAB中文論壇上的本書頁面上下載。
因作者水平所限,本書恐有疏漏之處,懇請廣大讀者批評指正。
編者
劉帥奇,畢業(yè)于北京交通大學(xué)。有8年以上的MATLAB應(yīng)用經(jīng)驗。精通MATLAB算法開發(fā),并對程序設(shè)計有獨到的見解。榮獲省級和全國數(shù)學(xué)建模競賽三等獎2項、二等獎1項,還獲得了編程和其他類競賽獎1項。已發(fā)表和錄用論文20多篇,其中包括7篇SCI檢索期刊論文,9篇EI檢索期刊論文。主持和參與相關(guān)項目10余個。目前主要從事多維信號處理、圖像處理、人工智能、信號分析、故障診斷和算法開發(fā)等相關(guān)方面的研究。
李會雅,畢業(yè)于河北大學(xué)通信工程專業(yè)。長期從事通信工程專業(yè)一線教學(xué)。不僅精通MATLAB科學(xué)計算,還對目前市面上的相關(guān)教材多有研究,認(rèn)為目前的教材對于普通本科院校來說不盡完善。目前的研究方向為多維信號處理。
趙杰,畢業(yè)于河北工業(yè)大學(xué)。現(xiàn)任河北大學(xué)電子信息工程學(xué)院常務(wù)副院長。精通MATLAB數(shù)值計算、小波分析、圖像處理。長期從事圖像處理算法的研究,并對基于MATLAB的圖像處理算法有深入研究。先后多次參與國家自然科學(xué)基金項目等。目前研究方向為圖像處理和計算視覺。
第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 習(xí)題 23
第2章 MATLAB矩陣及其運算 24
2.1 變量和數(shù)據(jù)操作 24
2.1.1 變量與賦值 24
2.1.2 預(yù)定義變量 25
2.1.3 內(nèi)存變量的管理 26
2.1.4 MATLAB常用數(shù)學(xué)函數(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矩陣相關(guān)運算 51
2.3.1 算術(shù)運算 51
2.3.2 關(guān)系運算 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 習(xí)題 68
第3章 MATLAB繪圖 69
3.1 二維數(shù)據(jù)曲線圖 69
3.1.1 繪制單根二維曲線 69
3.1.2 繪制多根二維曲線 74
3.1.3 設(shè)置曲線樣式 80
3.1.4 圖形標(biāo)注 84
3.1.5 坐標(biāo)控制 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 習(xí)題 124
第4章 MATLAB程序設(shè)計 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 習(xí)題 162
第5章 MATLAB數(shù)據(jù)分析及應(yīng)用 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 標(biāo)準(zhǔn)方差與相關(guān)系數(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 多項式的導(dǎo)函數(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 習(xí)題 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 細(xì)胞 228
6.3.1 細(xì)胞數(shù)組的創(chuàng)建 228
6.3.2 細(xì)胞數(shù)組的訪問 230
6.3.3 細(xì)胞數(shù)組的顯示 231
6.4 字符串 233
6.4.1 字符串構(gòu)造 233
6.4.2 字符串函數(shù) 234
6.5 本章小結(jié) 241
6.6 習(xí)題 242
第7章 MATLAB圖形用戶界面設(shè)計 243
7.1 圖形用戶句柄 243
7.2 圖形用戶界面開發(fā)環(huán)境 247
7.2.1 圖形用戶界面設(shè)計窗口 247
7.2.2 常用的用戶界面設(shè)計工具 250
7.3 菜單設(shè)計 258
7.3.1 建立用戶菜單 258
7.3.2 菜單對象常用屬性 263
7.3.3 快捷菜單 265
7.4 對話框設(shè)計 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 習(xí)題 289
第8章 MATLAB在圖像處理中的應(yīng)用 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)學(xué)算子 311
8.7 圖像變換 318
8.8 本章小結(jié) 321
8.9 習(xí)題 321