本書在第3版的基礎(chǔ)上,主要做了如下改進:
① 新增了“采用App Designer設計APP”一章,詳細講解了如何采用新一代GUI設計平臺App Designer設計APP。
② 新增了“MATLAB基本編程步驟”專題,詳細介紹了高效、高質(zhì)量編程的必需步驟。
③ 新增了“字符數(shù)組與字符串數(shù)組”一節(jié),詳細介紹了字符數(shù)組與字符串數(shù)組,以及與字符處理相關(guān)的函數(shù)。
④ 大量使用表格,使本書內(nèi)容更加直觀易懂,刪除了部分應用面偏窄的章節(jié)、專題、例題。
⑤ 進一步規(guī)范了代碼的結(jié)構(gòu),增強了可讀性,優(yōu)化了代碼的效率。
⑥ 代碼注釋率達到了90%以上,代碼更加通俗易懂。
本書共8章,每章由以下4節(jié)內(nèi)容組成:知識點歸納、重難點講解、專題分析和精選答疑。知識點歸納全面介紹了本章的內(nèi)容與知識點,容易理解錯的知識點用【注意】標明,個別地方配以典型例題講解;重難點講解簡要概括了本章的重點和難點,便于讀者重點學習掌握;專題分析系統(tǒng)全面地對某個知識點進行專門講解,達到一針見血的目的;精選答疑篩選出讀者在學習過程中經(jīng)常遇到的問題,配合習題進行解答。本書包含大量例題,建議讀者先自行完成例題,然后參考例題解析,配合代碼注釋,分析比較程序代碼。這樣邊學邊練,可以進一步牢固地掌握GUI設計技巧和方法。
第1章:GUI設計預備知識。主要介紹了 MATLAB的基本程序元素、幾種設計中經(jīng)常使用的數(shù)據(jù)類型和矩陣操作函數(shù),以及程序設計的5種句型(for、 while循環(huán)結(jié)構(gòu),if、 switch條件分支結(jié)構(gòu)和try catch結(jié)構(gòu))。之后以專題形式,分別詳細講解了編程步驟、編程風格、代碼優(yōu)化以及編程技巧等內(nèi)容。
第2章:文件I/O。主要介紹了文件I/O 操作的相關(guān)函數(shù),分高級文件I/O 和低級文件I/O 兩部分。高級文件I/O 介紹了讀寫MAT、ASCI、TXT、 Excel、圖片和音頻等文件的方法及相關(guān)函數(shù);低級文件I/O 介紹了讀寫二進制和文本文件的方法及相關(guān)函數(shù)。以專題形式全面講解了讀寫文本文件的技巧與方法。
第3章繪圖簡介。主要介紹了與GUI設計密切相關(guān)的繪圖工具函數(shù)。繪圖函數(shù)常用于GUI設計中的數(shù)據(jù)可視化。
第4章:句柄圖形系統(tǒng)。主要介紹了GUI對象的概念及其操作函數(shù),各種GUI對象的純代碼創(chuàng)建方法、屬性及含義。之后以專題形式,全面講解了超文本標記語言(HTML)在MATLAB中的應用、表格設計及坐標軸設計。本章是GUI設計的重點內(nèi)容,需要熟練掌握。
第5章:預定義對話框。介紹了 GUIDE可調(diào)用的所有預定義對話框,包括公共對話框和自定義對話框。預定義對話框使得GUI設計更加直觀、靈活。
第6章:采用 GUIDE建立GUI。本章首先介紹了采用 GUIDE 建立GUI的方法、GUI的M 文件構(gòu)成、回調(diào)函數(shù)的分類以及回調(diào)函數(shù)的編寫方法,然后舉例介紹了 GUIDE環(huán)境下GUI組件的使用方法。最后以專題形式,系統(tǒng)講解了GUI對象之間的數(shù)據(jù)傳遞方法以及回調(diào)函數(shù)的應用實例。通過本章的學習,讀者可以設計出精美的GUI界面,實現(xiàn)復雜的功能。本章是GUI設計的重點內(nèi)容,需要熟練掌握。
第7章:串口編程。介紹了GUI設計中串口的使用方法。
第8章:采用App Designer設計APP。系統(tǒng)地介紹了App Designer對象以及各對象的功能、使用方法;以重難點講解的方式詳細介紹了數(shù)據(jù)、函數(shù)的傳遞方法;以專題分析的方式介紹了兩窗口APP以及復雜多窗口APP的設計方法與關(guān)鍵點;本章同時介紹了如何將GUIDE設計的APP導入App Designer進行再開發(fā)。最后以精選答疑的方式將本章知識點串聯(lián)講解,使讀者的認識更為深刻。本章知識體系獨立,可單獨學習。
最后,附錄部分列出了常用的GUI設計相關(guān)函數(shù),供讀者參考查詢。
本書在編寫過程中,參考了大量的網(wǎng)絡資料,也得到了math、lyqmath、makesure5、lskyp、謝中華、MATLAB學徒、midland等很多MATLAB中文論壇(http://www.ilovematlab.cn)上的朋友的熱心幫助,沒有他們的幫助,本書會缺少很多閃光點。感謝 MATLAB中文論壇提供的珍貴資源!
另外,我要特別感謝我的妻子王一,在創(chuàng)作本書的過程中,她在背后給予我無微不至的照顧和鼓勵。
由于篇幅有限,還有很多案例不能一一在書中呈現(xiàn),我們在MATLAB中文論壇設立了在線交流版塊,在版塊里補充了一些案例,詳見https://www.ilovematlab.cn/forum-155-1.html。
讀者可以登錄北京航空航天大學出版社的官方網(wǎng)站,選擇“下載專區(qū)”→“隨書資料”下載本書配套的程序代碼。也可以關(guān)注“北航科技圖書”公眾號→回復“3205”獲得本書的免費下載鏈接。下載過程中遇到任何問題,請發(fā)送電子郵件至goodtextbook@126.com 或致電010-82317738咨詢處理。
由于作者水平有限,加之時間倉促,書中難免有不足與疏忽之處,敬請讀者批評指正。本書勘誤網(wǎng)址:http://www.ilovematlab.cn/thread-295336-1.html。
邵 斌
2019年10月于重慶大學
第1章 GUI設計預備知識 1
1.1 知識點歸納 1
1.1.1 基本程序元素 1
1.1.2 數(shù)據(jù)類型 7
1.1.3 矩陣操作 40
1.1.4 程序設計 49
1.2 重難點講解 61
1.2.1 矩陣、向量、標量與數(shù)組 61
1.2.2 數(shù)據(jù)類型轉(zhuǎn)換 62
1.3 專題分析 65
專題1 MATLAB基本編程步驟 65
專題2 編程風格 67
專題3 代碼優(yōu)化 71
專題4 M 文件編程小技巧 75
1.4 精選答疑 82
問題1 單元數(shù)組占用的內(nèi)存空間如何計算 82
問題2 如何生成指定格式的常矩陣、字符串 83
問題3 如何生成隨機矩陣 85
問題4 如何查找或刪除數(shù)據(jù)中滿足條件的元素 87
問題5 如何給數(shù)組元素排序 89
問題6 如何從文本中查找數(shù)值 92
第2章 文件I/O 93
2.1 知識點歸納 93
2.1.1 高級文件I/O操作 93
2.1.2 低級文件I/O操作 110
2.2 重難點講解 123
2.2.1 二進制文件與文本文件 123
2.2.2 sprintf與fprintf函數(shù) 124
2.2.3 fscanf與textscan函數(shù) 125
2.2.4 Excel文件操作 125
2.2.5 圖像數(shù)據(jù)的操作 125
2.2.6 低級文件I/O操作 126
2.3 專題分析 126
專題5 MATLAB讀寫文本文件 126
2.4 精選答疑 136
問題7 如何提取Excel文件中的數(shù)據(jù)信息 136
問題8 如何由圖像生成字符矩陣 139
問題9 如何循環(huán)播放WAV音樂,并可以倍速/慢速播放、暫停/繼續(xù)播放和停止播放 141
問題10 如何讀取文本和數(shù)值混合的文件中的數(shù)據(jù) 144
問題11 如何將十六進制數(shù)轉(zhuǎn)換為float值 144
第3章 繪圖簡介 146
3.1 知識點歸納 146
3.1.1 常用的繪圖函數(shù) 146
3.1.2 繪圖工具 155
3.2 重難點講解 158
3.2.1 二維繪圖的相關(guān)函數(shù) 158
3.2.2 三維繪圖的相關(guān)函數(shù) 159
3.3 精選答疑 159
問題12 如何繪制幾何曲線,例如矩形、圓、橢圓、雙曲線等 159
問題13 如何繪制數(shù)據(jù)的統(tǒng)計圖 161
問題14 如何繪制特殊的字符、表達式 161
問題15 如何繪制網(wǎng)格圖 162
第4章 句柄圖形系統(tǒng) 163
4.1 知識點歸納 163
4.1.1 句柄圖形對象 164
4.1.2 句柄圖形對象的基本操作 165
4.1.3 句柄圖形對象的基本屬性 175
4.1.4 根對象 179
4.1.5 圖形窗口對象 183
4.1.6 坐標軸對象 194
4.1.7 核心圖形對象 200
4.1.8 uicontrol對象 221
4.1.9 hggroup對象 226
4.1.10 按鈕組與面板 229
4.1.11 自定義菜單與右鍵菜單 231
4.1.12 工具欄與工具欄按鈕 239
4.1.13 uitable對象 247
4.2 重難點講解 257
4.2.1 句柄式圖形對象的常用函數(shù)總結(jié) 257
4.2.2 Figure對象的幾個重要屬性 258
4.2.3 Axes對象的幾個重要屬性 259
4.2.4 Line對象的幾個重要屬性 260
4.2.5 text對象的幾個重要屬性 261
4.2.6 uitable對象的幾個重要屬性 261
4.2.7 uicontrol對象中的text控件與核心圖形對象中的text對象的比較 262
4.2.8 對象的Tag值與句柄值的概念比較(對GUIDE創(chuàng)建的GUI而言) 262
4.2.9 uimenu與uicontextmenu對象 262
4.3 專題分析 262
專題6 超文本標記語言(HTML)在MATLAB中的應用 262
專題7 表格設計 273
專題8 坐標軸設計 277
4.4 精選答疑 282
問題16 如何創(chuàng)建滿足要求的line對象 282
問題17 如何創(chuàng)建動態(tài)的GUI對象 283
問題18 如何為窗口設計背景圖片 285
問題19 如何定制窗口的菜單 286
問題20 如何設計窗口菜單并編寫回調(diào)函數(shù) 287
問題21 如何采用UI控件實現(xiàn)簡易的時鐘 288
問題22 如何實現(xiàn)文字的水平循環(huán)滾動效果 290
問題23 如何構(gòu)造和使用hggroup對象 293
問題24 如何使窗口最大化、最小化、置頂和居中,如何在窗口中更換圖標 295
問題25 怎樣利用Uitable對象在列名、行名或單元格中輸入上下標和希臘字母 296
問題26 如何更改菜單項的字體大小,如何設置菜單項的字體顏色 296
問題27 如何逐個輸出坐標軸內(nèi)的圖形到單獨的圖片中 297
問題28 如何將多幅圖片顯示到同一個坐標軸 299
第5章 預定義對話框 301
5.1 知識點歸納 301
5.1.1 文件打開對話框(uigetfile) 302
5.1.2 文件保存對話框(uiputfile) 304
5.1.3 顏色設置對話框(uisetcolor) 305
5.1.4 字體設置對話框(uisetfont) 306
5.1.5 頁面設置對話框(pagesetupdlg) 307
5.1.6 打印預覽對話框(printpreview) 307
5.1.7 打印設置對話框(printdlg) 307
5.1.8 進度條(waitbar) 307
5.1.9 菜單選擇對話框(menu) 312
5.1.10 普通對話框(dialog) 314
5.1.11 錯誤對話框(errordlg) 314
5.1.12 警告對話框(warndlg) 317
5.1.13 幫助對話框(helpdlg) 318
5.1.14 信息對話框(msgbox) 319
5.1.15 提問對話框(questdlg) 320
5.1.16 輸入對話框(inputdlg) 321
5.1.17 目錄選擇對話框(uigetdir) 322
5.1.18 列表選擇對話框(listdlg) 322
5.2 重難點講解 323
5.2.1 uigetfile 323
5.2.2 uiputfile 324
5.2.3 waitbar 324
5.2.4 msgbox 324
5.2.5 questdlg 324
5.2.6 inputdlg 324
5.2.7 listdlg 325
5.3 專題分析 325
專題9 預定義對話框在GUI設計中的應用 325
5.4 精選答疑 329
問題29 如何制作一個嵌套到當前窗口內(nèi)的進度條 329
問題30 如何制作文件瀏覽器 332
問題31 如何制作一個顏色選擇器 334
第6章 采用GUIDE建立GUI 336
6.1 知識點歸納 336
6.1.1 GUIDE界面基本操作 337
6.1.2 GUI的M 文件 346
6.1.3 回調(diào)函數(shù) 355
6.1.4 GUI跨平臺的兼容性設計 358
6.1.5 斷點調(diào)試和代碼性能分析器 359
6.1.6 采用GUIDE創(chuàng)建GUI的步驟 359
6.1.7 觸控按鈕(Push Button) 360
6.1.8 靜態(tài)文本(Static Text) 362
6.1.9 切換按鈕(Toggle Button) 364
6.1.10 滑動條(Slider) 366
6.1.11 單選按鈕(Radio Button) 368
6.1.12 可編輯文本(Edit Text) 369
6.1.13 復選框(Check Box) 371
6.1.14 列表框(Listbox) 373
6.1.15 彈起式菜單(Pop up Menu) 374
6.1.16 按鈕組(Button Group) 376
6.1.17 面板(Panel) 378
6.1.18 表格(Table) 379
6.1.19 坐標軸(axes) 384
6.2 重難點講解 386
6.2.1 回調(diào)函數(shù)中的數(shù)據(jù)傳遞 386
6.2.2 GUI界面之間的數(shù)據(jù)傳遞 387
6.2.3 KeyPressFcn與CurrentCharacter 388
6.2.4 WindowButtonDownFcn、Callback與SelectionType 388
6.3 專題分析 388
專題10 GUI對象之間的數(shù)據(jù)傳遞 388
專題11 回調(diào)函數(shù)的應用實例 393
6.4 精選答疑 405
問題32 如何動態(tài)修改List Box的選項 405
問題33 如何動態(tài)修改Pop Up Menu的選項 407
問題34 如何實現(xiàn)圖片的局部放大預覽 411
第7章 串口編程 414
7.1 知識點歸納 414
7.1.1 串口概述 414
7.1.2 串口對象的屬性 416
7.1.3 串口的基本操作 420
7.1.4 串口I/O函數(shù)匯總 423
7.2 重難點講解 424
7.2.1 串口對象的創(chuàng)建 424
7.2.2 重要的串口操作函數(shù) 424
第8章 采用App Designer建立APP 425
8.1 知識點歸納 425
8.1.1 App Designer簡介 426
8.1.2 啟動 App Designer 427
8.1.3 17種常用對象 431
8.1.4 2種容器對象 449
8.1.5 1種圖窗工具對象 452
8.1.6 10種儀器對象 453
8.1.7 回調(diào)函數(shù)表 455
8.1.8 9種常用對話框 456
8.2 重難點講解 468
8.2.1 獲取對象的屬性值 468
8.2.2 私有屬性的傳遞 470
8.2.3 公共屬性的傳遞 473
8.2.4 私有函數(shù)的調(diào)用 474
8.2.5 公共函數(shù)的調(diào)用 476
8.2.6 通過腳本訪問APP 478
8.2.7 APP界面添加背景圖片 478
8.2.8 3種APP打包方式 479
8.2.9 淺談App Designer代碼結(jié)構(gòu) 488
8.3 專題分析 491
專題12 使用App Designer設計兩窗口APP 491
專題13 使用App Designer設計多窗口APP 499
8.4 精選答疑 514
問題35 如何使用App Designer設計數(shù)字信號濾波器 514
問題36 如何使用App Designer設計數(shù)字圖像處理器 519
問題37 如何采用純代碼創(chuàng)建APP 525
問題38 如何將GUIDE 創(chuàng)建的APP遷移至App Designer 529
附 錄 MATLAB GUI設計常用函數(shù) 533