GUIDE已经被MATLAB抛弃了,你还不知道吗?App Designer才是发展的方向
目前市面上MATLAB GUI编程的书籍琳琅满目,但大多数是基于GUIDE开发的,MATLAB从2016年开始已经逐步用App Designer替代GUIDE,但是市面上只有少数书籍在介绍App Designer,并且只用很少的章节进行介绍。这对想学习面向对象编程的读者来说,是非常渴望有一本全面系统介绍App Designer的书籍,本书围绕MATLAB中先进的GUI编程工具App Designer为中心进行介绍,对App Designer中所有组件辅以大量实例进行介绍,全书采用图文并茂的方式进行引导式学习,随书代码扫描二维码即可获得,以期使读者感受到学习编程的快乐。
本书适合想快速入门App Designer的读者,可以作为各大高校的教材或教学辅导书,也可以作为从事生产管理和技术研发等相关工作人员的学习参考手册。
本书围绕MATLAB中先进的GUI编程工具App Designer为中心进行介绍,在编程基础知识部分介绍了MATLAB的新产品—实时编辑器的使用;在App Designer部分,对App Designer中所有组件,包括21个常用组件、3个容器、3个图窗工具、10个仪器仪表组件、8个航空航天组件,辅以大量实例进行介绍,最后对GUI编写过程中出现的中文乱码问题、数据类型转换、GUI的数据传递、TeX和LaTeX文本解释器进行了专题讨论。全书采用图文并茂的方式进行引导式学习,以期使读者感受到学习编程的快乐。 本书适合想快速入门App Designer的读者,可以作为各大高校的教材或教学辅导书,也可以作为从事生产管理和技术研发等相关工作人员的学习参考手册。
很高兴苑伟民老师邀请我为他的新书作序。作为MATLAB的铁杆粉丝,使用MATLAB编程来解决科研中的实际问题早已成家常便饭。编程的目的在于化繁为简,对于用户而言,往往并不关心代码如何编写,而在程序所能实现的功能。实现脚本功能封装最佳途径就是图形化用户界面开发(即GUI开发)。MATLAB GUI开发作为MATLAB编程的重要组成,是联结用户与MATLAB代码的桥梁。了解MATLAB GUI开发的读者应该知道,GUIDE是MATLAB的GUI开发的基石,通过它可以搭建出各式各样的应用程序框架,再通过回调函数实现整个应用功能。当然,除了GUIDE外,也可使用uicontrol等UI系列函数实现纯代码的GUI开发。不过随着MATLAB 2016a的发布,全新的应用开发工具App Designer正式面世,同时也宣告了属于GUIDE的时代即将终结!
相较于GUIDE,App Designer有着本质的不同:前者属于面向过程编程,而后者属于面向对象编程;前者基于JAVA Swing开发,后者则是基于更为开放的Web应用技术开发,如JavaScript、HTML和CSS等,这也使得用App Designer开发的应用更易于Web部署。此外,GUIDE所提供的组件相对单一,功能有限,若要高级应用则需要较扎实的JAVA Swing编程功底,而App Designer所提供的组件各式各样,且随着MATLAB的迭代更新,App Designer组件的内容和功能也必将日新月异。
虽然市面上教授MATLAB编程的书籍琳琅满目,但专注于MATLAB GUI开发的书籍屈指可数,且多半侧重于使用GUIDE来做GUI开发。App Designer作为新版MATLAB应用开发的首推工具,将逐步取代GUIDE直至其被MathWorks彻底弃用。因此,对于想要学习MATLAB应用开发的读者朋友,建议大家直接学App Designer。尽管App Designer已面市几年,但系统完整讲授App Designer开发的专业书籍少之又少,而渴望完整学习App Designer开发的学者与日俱增。为了满足大家的求知欲,让大家能够轻松愉快地搞定App Designer开发,苑伟民老师结合自身多年的MATLAB编程经验以及丰富的App Designer实战开发经历汇著成《MATLAB App Designer从入门到实践》。
即便对App Designer有所了解,但待从头到尾看完整本书后自己顿然有种醍醐灌顶、茅塞顿开的感觉。从MATLAB基础编程到App Designer组件应用,再到专题讨论,案例详实,图文并茂,丝丝入扣,即便是从未学过MATLAB编程的读者从头跟着此书学习也不会感到吃力。正如前面所讲,App Designer是面向对象编程,可惜的是书中缺乏MATLAB面向对象编程的相关知识介绍,如果添加那将是锦上添花的事。
巴山(matlab爱好者公众号创始人)
2022年01月01日 于重庆
第 1篇 MATLAB编程基础及初识App Designer
第 1章 MATLAB编程基础 2
1.1 M文件与实时编辑器的编写 2
1.1.1 创建脚本 2
1.1.2 代码创建 3
1.1.3 向程序中添加注释 4
1.2 循环及条件语句关键字 4
1.2.1 条件语句 5
1.2.2 循环控制语句 12
1.2.3 循环中控制权的传递 17
1.2.4 循环的终止 18
1.2.5 循环控制权的归还 19
1.3 变量和常量 20
1.3.1 变量 20
1.3.2 常量 23
1.4 数组的创建 24
1.5 数组的查询和元素的替换 26
1.6 运算符 28
1.7 运算符优先级 33
1.8 矩阵的运算 34
1.9 M文件和实时编辑器的调试 35
1.9.1 设置断点 35
1.9.2 运行文件 36
1.9.3 暂停运行文件 37
1.9.4 查找并解决问题 37
1.9.5 逐步执行文件 39
1.9.6 结束调试会话 40
第 2章 App Designer概述 41
2.1 App Designer组件 42
2.2 App Designer环境概述 44
2.2.1 创建画布 45
2.2.2 添加组件 45
2.2.3 自定义组件 47
2.2.4 对齐和间隔组件 47
2.2.5 组件组 48
2.2.6 在容器中排列组件 49
2.2.7 创建和编辑上下文菜单 50
2.3 在App Designer中编写回调 52
2.3.1 创建回调函数 52
2.3.2 使用回调函数输入参数 53
2.3.3 在代码中搜索回调 54
2.3.4 删除回调 54
第 2篇 App Designer组件编程实例
第3章 常用组件 56
3.1 HTML属性及编程示例 57
3.1.1 HTML对象的属性 57
3.1.2 示例:模拟网页编辑文本 58
3.2 下拉列表(DropDown) 59
3.2.1 DropDown对象的属性 60
3.2.2 示例:简单的点餐提示 61
3.3 按钮(Button) 62
3.3.1 Button对象的属性 62
3.3.2 示例:计算并显示LaTeX表达式 65
3.4 单选按钮组(控制按钮组)(ButtonGroup) 68
3.4.1 ButtonGroup和Button对象的属性 68
3.4.2 示例:简单的数据传递 70
3.5 切换按钮组(ToggleButtonGroup) 72
3.5.1 ToggleButtonGroup对象的属性 72
3.5.2 示例:模拟电梯运行楼层并播放语音提示 72
3.6 列表框(ListBox) 74
3.6.1 ListBox对象的属性 74
3.6.2 示例:图书书目选择 75
3.7 图像(Image) 76
3.7.1 Image对象的属性 76
3.7.2 示例:单击图片打开网站主页 78
3.8 坐标区(UIAxes) 79
3.8.1 UIAxes对象的属性 79
3.8.2 补充知识:控制响应鼠标单击的属性 92
3.8.3 示例:计算并绘制理想气体密度变化曲线 92
3.9 复选框(CheckBox) 94
3.9.1 CheckBox对象的属性 94
3.9.2 示例:提示复选框选择了哪个选项 95
3.10 微调器(Spinner) 96
3.10.1 Spinner对象的属性 97
3.10.2 示例:模拟调节灯的亮度变化 100
3.11 文本区域(TextArea) 101
3.11.1 TextArea对象的属性 101
3.11.2 示例:对文本内容进行操作 103
3.12 日期选择器(DatePicker) 103
3.12.1 DatePicker对象的属性 104
3.12.2 示例:更改系统日期 107
3.13 标签(Label) 108
3.13.1 Label对象的属性 108
3.13.2 示例:显示王勃的诗 109
3.14 树及树(复选框)(Tree) 110
3.14.1 Tree对象的属性 111
3.14.2 示例:选择节点读取Excel展示内容 112
3.15 滑块(Slider) 113
3.15.1 Slider对象的属性 114
3.15.2 示例:微调器和滑块相互读取并展示数值 116
3.16 状态按钮(StateButton) 117
3.16.1 StateButton对象的属性 117
3.16.2 示例:单击按钮提示按钮状态 119
3.17 编辑字段(数值、文本)(EditField) 120
3.17.1 EditField对象的属性 120
3.17.2 示例:单击按钮改变文本颜色 120
3.18 表(UITable) 121
3.18.1 UITable对象的属性 121
3.18.2 示例:读取Excel信息到UITable 123
3.19 超链接(Hyperlink) 124
3.19.1 Hyperlink对象的属性 125
3.19.2 示例:打开网站 126
3.20 综合实例:流体摩阻系数计算 126
第4章 容器(Containers)组件 131
4.1 网格布局管理器(GridLayout) 131
4.1.1 GridLayout对象的属性 131
4.1.2 示例:网格实现组件布局 133
4.2 选项卡组(TabGroup) 136
4.2.1 TabGroup对象的属性 137
4.2.2 示例:不同选项卡之间的数据和图像交互 138
4.3 面板(Panel) 139
4.3.1 Panel对象的属性 139
4.3.2 示例:疫情期间回乡人员信息登记 140
4.4 综合实例:按揭摊销计算器 142
第5章 图窗工具(Figure Tools)组件 145
5.1 上下文菜单(ContextMenu) 145
5.1.1 ContextMenu对象的属性 145
5.1.2 示例:右键菜单绘制三角函数 146
5.2 工具栏(Toolbar) 148
5.2.1 Toolbar对象的属性 148
5.2.2 示例:工具栏菜单绘制正弦函数 149
5.3 菜单(Menu) 151
5.3.1 Menu对象的属性 151
5.3.2 示例:菜单实现打开文件、保存文件、绘制图像等功能 153
5.4 综合实例:方程求解器 158
第6章 仪器仪表(Instrumentation)组件 161
6.1 圆形仪表(Gauge)、半圆环形仪表(Semicircular)、90度仪表(NinetyDegreeGauge)、
线性仪表(LinearGauge) 161
6.1.1 Gauge对象的属性 162
6.1.2 示例:模拟汽车车速和冷却液温度 163
6.2 信号灯(Lamp) 165
6.2.1 Lamp对象的属性 165
6.2.2 示例:模拟红绿灯 165
6.3 分档旋钮(DiscreteKnob) 166
6.3.1 Discrete Knob对象的属性 167
6.3.2 示例:模拟空调温度调节 169
6.4 旋钮(Knob) 170
6.4.1 Knob对象的属性 170
6.4.2 示例:模拟收音机调频 172
6.5 开关(Switch)、拨动开关(ToggleSwitch)、 跷板开关(RockerSwitch) 173
6.5.1 Switch对象的属性 173
6.5.2 示例:模拟汽车启动 174
6.6 综合实例:模拟汽车启动和控制车速 176
第7章 航空航天(AeroSpace)组件 178
7.1 空速指示仪(AirspeedIndicator) 178
7.2 海拔测量仪(Altimeter) 180
7.3 人工地平仪(ArtificialHorizon) 181
7.4 爬升率指示仪(ClimbIndicator) 182
7.5 EGT指示仪(EGTIndicator) 183
7.6 航向指示仪(HeadingIndicator) 184
7.7 RPM指示仪(RPMIndicator) 185
7.8 转弯协调仪(TurnCoordinator) 186
7.9 专题—创建和配置飞行仪表组件和动画对象 187
7.10 综合实例:标准驾驶舱仪表显示飞行状态信息 189
第8章 App打包生成EXE可执行文件 197
8.1 工具条打包App安装程序文件 197
8.2 Application Compiler打包文件 199
第3篇 专题讨论
第9章 GUI编写出现乱码的解决方法 204
9.1 备份系统配置文件 204
9.2 选用兼容的中文字体 204
9.3 将计算机区域格式修改为中文 204
9.4 使用ASCII码表示中文字符 205
9.5 使用代码和ASCII码编写GUI 206
第 10章 数据类型及数据类型转换 207
10.1 数据类型及说明 207
10.2 数据类型转换函数 208
10.3 数据类型转换函数的总结及示例 212
10.3.1 ASCII字符与数值间的转换 217
10.3.2 表示数值的文本与数值间的转换 217
10.3.3 表示数值数组的文本与数值间的转换 217
10.3.4 表示数值数组的文本与数值数组间的转换 219
第 11章 GUI中的数据传递 222
11.1 在工作区之间共享数据 222
11.1.1 做法—传递参数 222
11.1.2 嵌套函数 222
11.1.3 持久变量 223
11.1.4 全局变量 224
11.2 回调函数中的数据传递 224
11.2.1 圆点引用法—app.组件.属性值 225
11.2.2 圆点引用法—event.值 225
11.2.3 声明全局变量 225
11.3 App内创建私有属性或者公共属性共享数据 225
11.3.1 创建私有属性和公共属性的方法 225
11.3.2 示例:共享绘图数据和下拉列表中的数据 227
11.4 不同App之间的数据传递(在多窗口App中共享数据) 229
11.4.1 流程概述 229
11.4.2 将信息发送给对话框 229
11.4.3 将信息返回给主App 231
11.4.4 关闭窗口时的管理任务 232
11.4.5 示例:两个App之间的数据传递 233
第 12章 TeX和LaTeX文本解释器 237
12.1 TeX标记 237
12.2 LaTeX标记 239
12.3 LaTeX形式的符号表达 240
12.3.1 使用LaTeX函数转化为LaTeX表达式 240
12.3.2 使用第三方公式编辑器获取LaTeX表达式 241
伟民兄的这本《MATLAB App Designer从入门到实践》,整体内容详实生动,知识讲解重点突出,搭配原创实践案例,是一本关于MATLAB App Designer不可多得的好书,强烈推荐!——罗华飞(畅销12年经典教程《MATLAB GUI设计学习手记》作者)
从书名就能看出此书是一把为您打开MATLAB App Designer开发新世界大门的钥匙。无论MATLAB编程新老手,本书都能给您带来无穷的编程乐趣!——巴山(matlab爱好者公众号创始人)
本书内容覆盖范围广,示例丰富,将知识要点、关键问题与编程实践紧密结合,为新手提供了一条方便快速的捷径。——MATLAB的科学与工程应用公众号创始人清风
本书是作者多年钻研应用MATLAB的经验结晶,所谓“灵感易得,细节难求”,尤其在使用大型复杂软件时,由于涉及面很广,技术点很多,有时一个很小的地方就卡住了,这本书正是作者淌过无数次河之后总结出来的技术宝藏。——宽客俱乐部创始人,悍马定理创始人冯正平
以MATLAB实时编辑器及App Designer为主要内容,内容由浅入深,图文并茂,案例详实具体,代码通俗易懂。——中科院博士、河南大学讲师王伟
每一个控件都有实例介绍,是市面上一本不可多得的App Designer零基础入门到实战的书籍。——MATLAB智囊团元老群
在MATLAB中文论坛上认识该书作者(论坛用户名icqaa)已10余年,看到作者兢兢业业地解答MATLAAB用户使用过程中遇到的常见问题,非常佩服作者的编程知识广度和对MATLAB的熟悉深度。此书给用户带来了很多新的实践,跳出大家对MATLAB只是一款工程计算工具的认知范畴。比如说对可视化应用的编写、实时编译器的运用、MATLAB面向对象的编程等,将会极大降低用户的使用门槛,提高用户体验以及交付可部署的应用程序速度。——MATLAB中文论坛创始人math(http://www.iLoveMATLAB.cn)
《MATLAB App Designer从入门到实践》随书资源下载链接如下。
资源地址:
box.ptpress.com.cn/y/57921
提取码:a5ce