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