MATLAB程序设计(原书第3版)
作者 : (美)斯蒂芬·J.查普曼(Stephen J. Chapman)著
译者 : 费选 余仁萍 黄伟 译
丛书名 : 计算机科学丛书
出版日期 : 2018-07-12
ISBN : 978-7-111-60301-6
定价 : 89.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 339
开本 : 16
原书名 : Essentials of MATLAB Programming,Third Edition
原出版社: Cengage Learning
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书介绍了MATLAB语言,并展示如何将MATLAB当作技术编程语言来解决各种典型问题的方法和技巧。不仅指导读者如何编写清晰、高效、良好的MATLAB程序,还介绍了大量MATLAB的实用函数。全书共9章,前7章涵盖MATLAB的基本概念和实现,后2章引入更多的高级应用,内容全面,通俗易懂。非常适合作为工程和计算机专业学生系统学习的教材,同时也可作为广大科技工作者掌握malab计算工具的自学用书。

图书特色

图书前言

MATLAB(MATrix LABoratory的简称,即矩阵实验室)是由MathWorks公司开发的专业工程与科学计算软件,其最初的设计目的是进行矩阵的数学运算。然而,近年来,MATLAB逐渐发展成为一个能够从根本上解决各种重要技术问题并且极其灵活的计算系统。
MATLAB软件执行MATLAB语言编写的程序,同时还提供十分丰富的预定义函数库,简化编程过程,提高编程效率。与其他编程语言(如Fortran或C)相比,丰富的MATLAB库函数能够帮助用户更容易地解决工程技术问题。本书将基于MATLAB R2014b版本介绍MATLAB语言的特点,并展示如何使用它来解决经典的技术问题。
通过对MATLAB编程语言的学习,学生将学会如何使用MATLAB编写整洁、高效、文档化的程序。另外,本书无意在此对所有的MATLAB函数逐一介绍,仅讲解如何使用MATLAB编程,以及如何利用联机帮助工具查找需要的MATLAB函数。
本书适合计算机科学与技术专业的大学一年级学生使用,可作为“编程与问题求解导论”课程的教材。具体课时可安排9周,每周3小时。
第3版修订
本书适用于MATLAB R2014b及更高版本。MATLAB R2014b是MATLAB启用新的H2图形系统后的首个版本,其中H2图形系统旨在实现更高质量的图形输出效果。目前,图形组件成为带有句柄的MATLAB对象,其属性可通过MATLAB对象标记进行访问。下面将为大家简单介绍此版本的修订之处。
自上一版以来,面向对象思想和面向对象编程的MATLAB实现越发成熟,在此将进行详细介绍。此外,仍对旧关键字–值方法提供支持。
前面章节大幅缩短,以便更合理地安排内容让大家理解和掌握重要部分。现将分支部分和循环部分分别独立成章,并将函数部分分为两章进行讨论。
第3章着重介绍二维绘图,并整理所有绘图相关信息以确保大家理解。
第8章是对三维绘图的拓展,该章有助于加强并深化学生对三维绘图的学习和理解。
第9章介绍了最新的H2图形的特征。
本书特色
本书的特色在于不断强调如何编写可靠的MATLAB程序。无论是对于初学者,还是对于已有基础的相关从业人员,本书都能给予一定的帮助。下面详细介绍本书特色。
1.注重自顶向下的设计方法
本书第4章介绍了一种自顶向下的设计方法,并将其运用于书中的其余部分。首先,此方法鼓励大家在开始编程之前认真考虑好如何设计程序,即重点需要弄清楚所要解决问题的明确定义、所需的输入和输出等。其次,一旦清楚问题定义,下面就是考虑如何逐步将任务成功地分解为较小的子任务,并将各个子任务作为单独的子程序或函数来实现。最后,要理解在编程过程中测试的重要性,不管是组件程序的单元测试,还是最终程序的详细测试,都需要认真进行。
本书所讲授的通用设计过程可概括如下。
(1)清楚地陈述所要解决的问题。
(2)定义程序所需的输入和产生的输出。
(3)描述程序中的实现算法。涉及自顶向下设计和任务逐步分解,需用伪代码或流程图。
(4)将算法转换成MATLAB语句。
(5)测试MATLAB程序,包括对特定函数的单元测试,以及不同数据集下最终程序的详细测试。
2.注重函数
本书重视函数的使用,其可在逻辑上将任务分解为更小的子任务,并具有数据隐藏的优点。同时,还强调了函数在组合到最终程序之前单独测试的重要性。此外,本书介绍了使用函数所犯的常见错误,以及如何避免这些错误。
3.注重MATLAB工具
本书介绍了如何正确使用MATLAB的内置工具,使编程和调试更加容易。所涵盖的工具包括编辑器/调试器、工作空间浏览器、帮助浏览器和GUI设计工具。
4.“良好编程习惯”框
这些框用来突出良好的编程实践。此外,在章节的最后会给大家总结良好编程习惯。下面是一个“良好编程习惯”框的示例。
良好编程习惯
始终将if结构的主体缩进两个或更多空格,以提高代码的可读性。
5.“编程误区”框
这些框用来突出常见的错误,以便避免它们。下面是一个“编程误区”框的示例。
编程误区
确保在前63个字符中变量名是唯一的。否则,MATLAB将无法分辨出它们之间的区别。
MATLAB编程的优势
与传统的计算机编程语言相比,MATLAB在解决工程技术问题方面具有诸多优势,下面重点介绍几个。
1.易用性
MATLAB是一种解释型语言,如同各种版本的Basic语言。与Basic一样,它也非常容易使用。该程序可作为便签式计算器来求解在命令行输入的表达式的值,或者用于执行预先编写好的大型程序。在内置集成开发环境中,可以方便地编写和修改程序,并使用MATLAB调试器来调试程序。正是基于这种语言的易用性,对于快速建立新程序的原型,它是一个理想的工具。
MATLAB还提供了许多程序开发工具,包括集成的编辑器/调试器、在线文档和手册、工作空间浏览器以及大量示例。
2.平台独立性
MATLAB支持多种操作系统,并提供了大量的平台独立措施。在撰写本书时,Windows 7/8/10、Linux、Unix、Mac OS X 10.10和10.11等系统都支持MATLAB。对于MATLAB而言,在一个平台上编写的程序在其他平台上一样可以正常运行,在一个平台上编写的数据文件在其他平台上一样可以读取。因此,可根据用户需求将在MATLAB中编写的程序移植到新
平台。
3.预定义函数
MATLAB带有一个丰富的预定义函数库,提供了许多已测试和打包过的解决基本工程问题的函数。例如,需要编写一个程序,该程序要求计算与输入数据有关的统计信息。在大多数语言中,程序员需要编写自己的子程序或函数来实现相关运算,如算术均值、标准差和中位数等。但是,在MATLAB中已经编写好了完成这些功能的函数,因此MATLAB编程变得相对简单。
除了MATLAB基本版中内置的大型函数库外,还有许多其他专用工具箱可以帮助用户解决特定领域的复杂问题。例如,用户可以购买标准工具箱以解决信号处理、控制系统、通信、图像处理和神经网络等领域的问题。
4.设备独立的绘图
与其他语言不同,MATLAB包含许多必要的绘图和成像命令。在任何支持MATLAB运行的图形输出设备上,这些绘图和图像都会显示。因此,MATLAB是一个数据可视化的卓越工具。
5.图形用户界面
利用MATLAB工具,程序员可为编写好的程序交互式地构建一个图形用户界面(Graphical User Interface,GUI)。因此,程序员可以为所设计的复杂数据分析程序提供图形用户界面,以方便经验相对缺乏的用户使用。
教学特色
本书可作为大学一年级“编程与问题求解导论”课程的教材。根据本书的内容,建议课时为9周,每周3小时。如因时间关系无法全部讲授,可跳过第8章和第9章,其余部分的编程基础知识足够大家学习使用MATLAB解决问题。
本书还包含一些旨在帮助初学者加深对知识的理解的特色。全书共有14个测验,答案见附录C。这些测验可帮助初学者了解自己对知识的掌握程度。此外,还包括大约150道习题,答案在教师手册中。良好的编程实践以“良好编程习惯”框来突出显示,而常见的错误则以“编程误区”框突出显示。各章最后给出了良好编程习惯的总结和MATLAB命令与函数的总结。
教师资源库
教师手册包含所有章节习题的答案,还有供上课使用的授课PPT、书中所有示例的MATLAB源代码和教师手册中答案的源代码。
致谢
非常感谢下列各位对本书出版提供的帮助:
David Eromom 乔治亚南方大学
Arlene Guest 海军研究生院
Mary M. Hofle 爱达荷州立大学
Mark Hutchenreuther 加州州立理工大学
Mani Mini 艾奥瓦州立大学
另外,感谢Cengage Learning出版社的Global Engineering团队对本版的无私奉献,他们是:Timothy Anderson(产品总监)、Mona Zeftel(高级内容开发者)、D. Jean Buttrom(内容项目经理)、Kristin Stine(营销经理)、Elizabeth Murphy和Brittany Burden(学习解决方案专家)、Ashley Kaupert(副媒体内容开发者)、Teresa Versaggi和Alexander Sham(产品助理)、Rose Kernan(RPK Editorial Services公司)。他们从专业角度引导本书的开发和制作的各个环节,并使之成功出版。
最后,非常感谢我的妻子Rosa在我们一起度过的四十多年中给予的帮助和鼓励。

Stephen J. Chapman  
2015年11月8日于澳大利亚墨尔本

上架指导

数学

封底文字

本书基于MATLAB R2014b版本的开发环境,从基本概念出发,以实际应用为例,系统介绍如何使用MATLAB解决各种经典技术问题。在第3版中,作者着重阐述了MATLAB语言的编程技巧,同时强调了提升解决问题能力的重要性。本书简明扼要地介绍了如何编写整洁、高效和文档化的程序,并将其引入到MATLAB的许多实际函数中。

本书特色
注重自顶向下的设计方法,给出一个形式化的程序设计过程。
重视函数的使用,并介绍使用函数所犯的常见错误,以及如何避免这些错误。
强调良好的编程实践,章末含有良好编程习惯的总结。
包含14个测验,并在附录中提供答案,可帮助读者了解自己对知识的掌握程度。

作者简介
斯蒂芬 J. 查普曼(Stephen J. Chapman) 拥有路易斯安那州立大学电气工程学士学位、佛罗里达中央大学电气工程硕士学位,并在莱斯大学进一步深造。他曾供职于美国海军、休斯敦大学、MIT林肯实验室,目前在墨尔本负责澳大利亚BAE系统建模和运营分析,开发了一个军舰自我防御的模型,这个模型包含40多万行的MATLAB代码且运行了十余年。他是电气和电子工程师学会的高级会员,也是澳大利亚工程师学会的会员。

作者简介

(美)斯蒂芬·J.查普曼(Stephen J. Chapman)著:斯蒂芬 J.查普曼(Stephen J. Chapman)拥有路易斯安那州立大学电气工程学士学位、佛罗里达中央大学电气工程硕士学位,并在莱斯大学进一步深造。他曾供职于美国海军、休斯敦大学、MIT林肯实验室,目前在墨尔本负责澳大利亚BAE系统建模和运营分析,开发了一个军舰自我防御的模型,这个模型包含超过40万行的MATLAB代码且运行了十余年。他是电气和电子工程师学会的高级会员,也是澳大利亚工程师学会的会员。

译者序

MATLAB是MATrix LABoratory的简写,是一款由美国MathWorks公司开发的专业工程与科学计算软件,是一个集科学计算、可视化及交互式程序设计于一体的计算环境。MATLAB将数值分析、矩阵计算和科学数据可视化等诸多功能集成在一个易于使用的视窗环境中,并在一定程度上摆脱了传统非交互式程序设计语言的编译模式,为科学研究和工程计算提供了方便。
本书作者Stephen J. Chapman先后在美国海军核动力学校、麻省理工学院和休斯敦大学任教,同时作为技术负责人,先后在美国海军部门和澳大利亚BAE系统公司,带领团队完成了超过40万行MATLAB代码的项目开发。作者结合三十多年来丰富的教学和实践经验,编写了这本MATLAB程序设计的经典教材。鉴于此,译者将本书的第3版翻译成中文,以方便国内高等院校相关专业的广大师生及相关领域的工程技术人员与研究人员阅读。
本书基于MATLAB R2014b版本的开发环境,从基本概念出发,以实际应用为例,系统地介绍了MATLAB如何解决各种经典技术问题。第1章介绍了MATLAB的优缺点及工作环境。第2章介绍了变量、数组、内置函数和绘图等基础知识。第3章详细介绍了二维绘图函数及其功能。第4章给出了程序设计的规范要求,并介绍了分支结构控制语句。第5章介绍了循环结构控制语句和向量化处理。第6章和第7章分别介绍了用户自定义函数的基本特性和高级特性。第8章和第9章介绍了更高级的其他数据类型及绘图类型、元胞数组、结构体和新的MATLAB句柄图形。最后的附录部分包括有用的UTF-8字符集、输入/输出函数、测验答案、常用的函数和命令。
全书章节安排合理,内容规划由浅入深,概念介绍简洁明了,有助于初学者理解和记忆;穿插实际示例的讲解,紧密结合了基本概念与方法的应用,有助于对某些抽象概念的理解;通过“良好编程习惯”和“编程误区”,增强读者编写程序的规范性和高效性,避免出现不必要的错误;通过测验和章节习题,重复关键知识点,进一步加深读者的记忆和理解;每章末尾总结本章提到的良好编程习惯以及用到的MATLAB命令和函数。
整本书的翻译由费选、余仁萍和黄伟共同完成,在翻译过程中,虽然力求准确地反映原著内容,但由于译者水平有限,难免有疏漏之处,恳请读者批评指正。
本书的翻译得到了河南省科技攻关项目(编号182102210092)、河南省高等学校重点科研项目(编号15A520056)和河南工业大学人才支持项目(编号31401918和2016QNJH26)的资助,特此表示感谢。

译 者  
2018年4月于郑州 

图书目录

出版者的话
译者序
前言
第1章 MATLAB简介 1
1.1 MATLAB优势所在 1
1.2 MATLAB不足之处 3
1.3 MATLAB工作环境 3
1.3.1 操作界面 3
1.3.2 命令窗口 4
1.3.3 工具栏 5
1.3.4 命令历史窗口 6
1.3.5 文档窗口 6
1.3.6 图形窗口 8
1.3.7 窗口停靠与取消停靠 9
1.3.8 工作空间 9
1.3.9 工作空间浏览器 10
1.3.10 当前文件夹浏览器 11
1.3.11 获取帮助 11
1.3.12 几个重要命令 13
1.3.13 MATLAB搜索路径 14
1.4 MATLAB应用示例——计算器 15
1.5 本章小结 17
1.6 本章习题 17
第2章 MATLAB基础知识 19
2.1 变量和数组 19
2.2 创建和初始化变量 21
2.2.1 在赋值语句中初始化变量 22
2.2.2 使用快捷表达式初始化 23
2.2.3 使用内置函数初始化 24
2.2.4 使用键盘输入初始化变量 25
2.3 多维数组 26
2.3.1 在内存中存储多维数组 27
2.3.2 用一维方式访问多维数组 28
2.4 子数组 28
2.4.1 函数end 28
2.4.2 在赋值语句左侧使用子数组 29
2.4.3 将标量赋值给子数组 30
2.5 特殊值 30
2.6 显示输出数据 32
2.6.1 更改默认格式 32
2.6.2 函数disp 33
2.6.3 使用函数fprintf标准化输出 33
2.7 数据文件 34
2.8 标量和数组运算 36
2.8.1 标量运算 36
2.8.2 数组和矩阵运算 37
2.9 运算级别 39
2.10 MATLAB内置函数 41
2.10.1 任意返回值 41
2.10.2 使用数组作为MATLAB函数输入 42
2.10.3 常见MATLAB函数 42
2.11 绘图简介 43
2.11.1 使用简单xy绘图 43
2.11.2 打印绘图 44
2.11.3 将绘图导出为图像文件 44
2.11.4 多个绘图 46
2.11.5 线条颜色、线条类型、标记类型和图例 46
2.11.6 对数刻度 49
2.12 示例 50
2.13 调试MATLAB程序 54
2.14 本章小结 56
2.14.1 良好编程习惯总结 56
2.14.2 MATLAB总结 57
2.15 本章习题 59
第3章 二维绘图 65
3.1 二维绘图的其他功能 65
3.1.1 对数刻度 65
3.1.2 控制x轴和y轴范围 68
3.1.3 同一轴上绘制多个绘图 70
3.1.4 创建多个图形 70
3.1.5 子图 72
3.1.6 控制绘图上的点间距 72
3.1.7 绘制线的高级控制 75
3.1.8 文本字符串的高级控制 75
3.2 极坐标绘图 78
3.3 注释与保存绘图 79
3.4 二维绘图的其他类型 82
3.5 二维数组绘图 85
3.6 本章小结 87
3.6.1 良好编程习惯总结 87
3.6.2 MATLAB总结 87
3.7 本章习题 88
第4章 分支结构与程序设计 91
4.1 自顶向下设计技术简介 91
4.2 伪代码的使用 93
4.3 逻辑数据类型 94
4.3.1 关系运算符与逻辑运算符 94
4.3.2 关系运算符 94
4.3.3 运算符==和~=的注意事项 95
4.3.4 逻辑运算符 96
4.3.5 逻辑函数 99
4.4 分支 100
4.4.1 if结构 100
4.4.2 if结构示例 102
4.4.3 if结构的注意事项 106
4.4.4 switch结构 108
4.4.5 try/catch结构 109
4.5 调试MATLAB程序的更多信息 115
4.6 本章小结 120
4.6.1 良好编程习惯总结 120
4.6.2 MATLAB总结 121
4.7 本章习题 121
第5章 循环结构和向量化 125
5.1 while循环 125
5.2 for循环 129
5.2.1 操作细节 134
5.2.2 向量化:更快的循环选择 136
5.2.3 MATLAB即时编译器 136
5.2.4 break语句和continue语句 138
5.2.5 嵌套循环 140
5.3 逻辑数组和向量化 141
5.4 MATLAB探查器 143
5.5 其他示例 145
5.6 函数textread 155
5.7 本章小结 157
5.7.1 良好编程习惯总结 157
5.7.2 MATLAB总结 157
5.8 本章习题 158
第6章 用户自定义函数基本特性 163
6.1 MATLAB函数简介 164
6.2 MATLAB变量传递:值传递机制 166
6.3 可选参数 175
6.4 使用全局内存共享数据 178
6.5 函数调用之间的数据存储 183
6.6 MATLAB内置函数:排序函数 187
6.7 MATLAB内置函数:随机数生成函数 189
6.8 本章小结 189
6.8.1 良好编程习惯总结 189
6.8.2 MATLAB总结 190
6.9 本章习题 190
第7章 用户自定义函数高级特性 195
7.1 函数的函数 195
7.2 本地函数、私有函数和嵌套函数 198
7.2.1 本地函数 198
7.2.2 私有函数 199
7.2.3 嵌套函数 199
7.2.4 函数执行顺序 201
7.3 函数句柄 201
7.3.1 创建和使用函数句柄 202
7.3.2 函数句柄的优点 204
7.3.3 函数句柄和嵌套函数 204
7.3.4 应用示例:常微分方程的求解 206
7.4 匿名函数 210
7.5 递归函数 211
7.6 绘图函数 212
7.7 直方图 214
7.8 本章小结 218
7.8.1 良好编程习惯总结 218
7.8.2 MATLAB总结 218
7.9 本章习题 219
第8章 其他数据类型和绘图类型 224
8.1 复数 224
8.1.1 复数变量 225
8.1.2 复数关系运算 225
8.1.3 复数函数 226
8.1.4 绘制复数 229
8.2 字符串和字符串函数 231
8.2.1 字符串转换函数 232
8.2.2 创建二维字符数组 232
8.2.3 连接字符串 232
8.2.4 比较字符串 233
8.2.5 查找和替换字符串中的字符 235
8.2.6 转换字符串中的大小写字母 236
8.2.7 删除字符串中的空白字符 236
8.2.8 数值转换为字符串 237
8.2.9 字符串转换为数值 238
8.2.10 总结 239
8.3 多维数组 243
8.4 三维绘图 245
8.4.1 三维线绘图 245
8.4.2 三维曲面、网格和等高线绘图 247
8.4.3 使用曲面和网格绘图创建三维物体 251
8.5 本章小结 253
8.5.1 良好编程习惯总结 253
8.5.2 MATLAB总结 253
8.6 本章习题 254
第9章 元胞数组、结构体和句柄图形 257
9.1 元胞数组 257
9.1.1 创建元胞数组 258
9.1.2 使用大括号{}作为元胞构造器 259
9.1.3 查看元胞数组的内容 259
9.1.4 扩展元胞数组 260
9.1.5 删除数组中的元胞 262
9.1.6 使用元胞数组中的数据 262
9.1.7 字符串的元胞数组 263
9.1.8 元胞数组的意义 264
9.1.9 元胞函数总结 266
9.2 结构体数组 267
9.2.1 创建结构体数组 268
9.2.2 添加字段到结构体 269
9.2.3 删除结构体中的字段 270
9.2.4 使用结构体数组中的数据 270
9.2.5 函数getfield和函数setfield 271
9.2.6 动态字段名 272
9.2.7 函数size 273
9.2.8 嵌套结构体数组 273
9.2.9 结构体函数总结 274
9.3 句柄图形 274
9.3.1 MATLAB图形系统 275
9.3.2 对象句柄 276
9.3.3 查看和修改对象属性 276
9.3.4 在创建时修改对象属性 277
9.3.5 在创建后修改对象属性 277
9.3.6 使用对象标识符查看和修改属性 277
9.3.7 使用函数get/set查看和修改属性 279
9.3.8 使用属性编辑器查看和修改属性 280
9.3.9 使用函数set列出可选属性值 283
9.3.10 查找对象 284
9.3.11 使用鼠标选择对象 286
9.4 位置和单位 288
9.4.1 figure对象的位置 288
9.4.2 axes和uicontrol对象的位置 289
9.4.3 text对象的位置 289
9.5 打印位置 291
9.6 默认和出厂属性 292
9.7 图形对象属性 293
9.8 本章小结 293
9.8.1 良好编程习惯总结 294
9.8.2 MATLAB总结 294
9.9 本章习题 295
附录A UTF-8字符集 297
附录B MATLAB输入/输出函数 298
附录C 测验答案 313
附录D MATLAB函数和命令 323

教学资源推荐
作者: 江国强
作者: [美]克利夫·B. 莫勒(Cleve B. Moler)著
参考读物推荐
作者: Ralph Grabewski
作者: 李杰臣 编著
作者: 曹树森 王 玲 阴艳超