本书的主旨是让读者熟练掌握MATLAB,在解决工程应用时,具备所需要的基本编程概念和技能。本书在函数、内容与结构、练习题、函数接口等方面较前一版有改动。全书分成两大部分:第一部分讲述用MATLAB进行程序设计及解决实际问题,包括MATLAB程序设计概念与组织、选择、循环、字符串操作、单元阵列及结构、高级文件输入/输出及高级函数等;第二部分针对实际应用,包括用MATLAB绘图、解线性代数方程组、进行基本统计、集合、排序和索引、处理声音和图像,以及高等数学中的曲线拟合、复数计算、微积分等。
MATLAB是MatrixLaboratory的简写,是一款由美国MathWorks公司开发的商业数学软件,是一个集科学计算、可视化及交互式程序设计的计算环境。它将数值分析、矩阵计算、科学数据可视化及非线性动态系统的建模和仿真等诸多功能,集成在一个易于使用的视窗环境中,为科学研究、工程设计及需要有效数值计算的学科领域提供了方便,在一定程度上摆脱了传统非交互式程序设计语言的编译模式,简化了计算形式,所以有很好的工程应用背景。
作者斯托米?阿塔韦(StormyAttaway),在美国波士顿大学机械工程系工作,是该系教学副主任。二十多年来一直是波士顿大学工程计算课程的课程协调人,她本人讲授过许多不同计算机语言及软件包方面的程序设计课程,具有丰富的教学及实践经验。
本书是美国许多大学的理工科学生的教学用书,深受学生欢迎。全书讲解深入浅出,围绕实际工程应用,通过解释MATLAB强大的函数功能,实现用MATLAB进行编程。它使工程技术人员能够全面理解和掌握如何利用MATLAB解决工程实际问题。与传统的专业程序设计概念不同,MATLAB程序设计强调的是用贴近人们日常习惯的数学书写方式快速解决实际问题,所以它并不像专业程序设计那样突出语法规范和参数定义规则。
国内外有不少关于MATLAB方面的书,但有特色的较少,斯托米?阿塔韦(StormyAttaway)撰写的这本是比较有特色的书之一。本书主要以MATLAB函数调用为主线,采用灵活的方式介绍程序设计概念,并能将其用于解决实际问题,比较适合广大非计算机专业学生作为程序设计课程的教材。书中第一部分主要讲述的就是这些内容,包括:MATLAB简介及MATLAB程序设计、程序控制语句类的选择和循环、MATLAB程序组织形式、字符串操作、程序设计中对加工对象数据的结构组织(单元阵列及结构)、高级文件输入/输出及高级函数等。当然,本书也可以作为工程技术人员解决实际问题的参考书。书中第二部分内容涉及的主要就是实际应用,包括用MATLAB绘图、解线性代数方程组、进行基本统计、集合、排序和索引、处理声音和图像,以及高等数学中的曲线拟合、复数计算、微积分等。
全书章节安排合理,内容规划有助于学生理解和记忆,编写生动有趣,书中随时采用一些问答题的方式讲述基本概念,容易引起读者的注意;通过例题和练习题讲解关键知识点并加深学生的记忆;对比用编程方法和直接调用内部函数的快速方法,加深理解MATLAB内部函数的作用;每章末尾总结通常易犯的错误,提供程序设计风格指南以及本章中用到的MATLAB函数和命令。通过解决实际问题来讲解知识点的方式容易激发学生的学习兴趣。
对于非计算机专业的理工科大学生来说,把MATLAB作为第一门算法语言,绕开了冗长复杂的程序设计概念细节,容易使学生掌握,并能在线性代数等课程及实际中应用。所以我们认为本书的教学和使用效果比较好。
本书的翻译出版是由电子工业出版社的马岚编辑和杨博编辑组织策划的。西安电子科技大学鱼滨老师和赵元哲老师在第二版的基础上进行了翻译和校对。其中赵元哲翻译和校对了前7章,鱼滨翻译和校对了第8章到第14章;宋力老师参加了部分翻译工作,研究生李孟鸽、袁丹、赵劼等参加了翻译和文字录入工作。原书中一些笔误的地方,翻译时都进行了更正,并对代码进行了验证。
希望本书的翻译出版能够为广大MATLAB的使用者提供方便,但由于我们水平所限,书中错误之处在所难免,欢迎读者批评指正!
译者2016年11月
前言
目标
本书的目的是把MATLAB作为一种工具使用,讲解解决基本问题所需的基本编程概念和技能。MATLAB是一款功能强大的软件,它包含完成从数学运算到三维成像多种任务的内置函数。另外,MATLAB拥有一套完整的编程结构,允许用户定制自己的程序规范。
介绍MATLAB的书有很多。这些书有两个基本特色:一些书除了一到两章介绍一些程序概念之外,主要阐述MATLAB中内置函数的使用;另一些书仅仅覆盖了编程结构,而没有涉及使MATLAB得到有效使用的许多内置函数。仅仅学习内置函数的读者能很好地使用MATLAB,但是不能理解基本的编程概念。因而对没有学习其他入门课程或没有阅读其他关于编程概念的书的读者,很难进一步学习C++或Java等编程语言。相反,首先只学习编程概念(使用任何语言)的读者倾向于使用高效率的控制语句来解决问题,并没有意识到在MATLAB中,许多情况下并不需要这样做。
本书采取一种混合式的方法,同时介绍编程和有效用法。学生们面临的挑战是几乎不能预测他们将来是否需要知道编程概念,或者像MATLAB这样的软件包是否能满足他们的职业需要。因而,对入门的学生来说,最好的方法就是同时给出编程概念和有效的内置函数。因为MATLAB非常容易使用,应用这种混合式方法来讲授编程和解决问题是一个完美的平台。
因为编程概念在本书中是非常关键的,所以本书的重点不是放在MATLAB的每个新版本如何节省时间的特点上。例如,在当前的MATLAB版本中,统计数字变量显示在工作台窗口中。在本书中没有显示任何细节,因为这一特点是否可用取决于软件的版本,而且本书是以解释概念为目的的。
第三版修订的内容
本书第三版的修改包括:
1.每章结束新增了“探索其他有趣特征”部分,列举了读者可能希望了解的相关语言结构、函数和工具。
2.扩大覆盖范围:
●图像处理,包括图像矩阵中不同数据类型的使用
●绘图功能,包括了那些使用对数尺的函数
●图形用户界面
3.MATLAB的R2012b版本的使用。
4.修订和新增“练习”问题。
5.修订并新增了有些章末的习题,使其更具有挑战性。
6.一些材料的重组,主要是:
●将向量和矩阵单独作为一章(第2章),包括向量和矩阵的函数和操作符,并安排了向量化代码
●更早给出了矩阵乘法(在第2章)
●向量化代码放在循环章节,为了比较数组的循环使用和向量化代码
7.用randi代替round(rand)。
8.用true/false代替logical(1)/logical(0)。
9.扩大了基础数学函数的覆盖范围,包括mod、sqrt、nthroot、log、log2和log10,以及更多的三角函数。
10.新增附录列出了书中用到的所有函数,以及读者或许想要了解的工具箱。
主要特点
编程概念和内置函数并行
本书最重要和独特的特点是并行地讲授MATLAB中的编程概念和内置函数的使用。本书以基本的编程概念开始,例如变量、赋值、输入/输出、选择和循环语句。本书通常先介绍一个问题然后使用“编程概念”和“有效方法”来解决。
系统方法
本书的另一个特点是采用系统的、逐步的方法将概念贯穿于全书中。在一个MATLAB教材中提前使用注释“我们将在以后介绍”来显示内置函数或特点是很常用的做法。本书并不这样做,在例子中需要用到的函数在之前就已经介绍过了。另外,对基本的编程概念将仔细和系统地解释。例如,通过循环来计算总和、条件循环中的计数和差错检测这些非常基本的概念,在其他书中并不会介绍,但都包含在本书中。
文件输入/输出
工程和科学中的许多应用涉及操纵大量的数据集,这些数据集存储在外部文件中。大部分MATLAB书至少要提到save和load函数,并且在一些例子中也会提到低层的文件输入/输出函数。因为文件输入和输出对许多应用来说是非常基础的,所以本书将覆盖几种低层的文件输入/输出函数,以及从电子表格文件中读数据和将数据写到电子表格文件中。在以后的章节中还将处理音频和图像文件。这些文件输入/输出的概念将逐步介绍:首先在第3章中介绍load和save,然后在第9章中介绍低层函数,最后在第13章中介绍声音和图像。
用户自定义函数
用户自定义函数是一个非常重要的编程概念。许多时候,函数类型、函数调用与函数头等之间的细微差别,容易被初学者混淆。因此本书将逐步介绍这些概念。首先,在第3章中阐述计算和返回一个单精度值的最容易理解的函数类型;然后,无返回值的函数和返回多个值的函数在第6章中介绍;最后,第10章介绍高级函数的特点。
高级编程概念
除了基本的编程概念,本书中还覆盖了一些高级编程概念,如字符串操作、数据结构、递归、匿名函数和函数参数的变量数目。另外也会介绍排序、查找和索引。所有这些也采取了系统的方法,例如单元数组在应用于文件输入函数和作为饼图的图例之前介绍。
解决问题的工具
除了编程概念,解决问题的一些必要的基础数学知识也将涉及。主要包括统计函数、求解线性代数方程组和数据拟合曲线。另外还将介绍复数和一些计算(积分和微分)的使用。阐述基础数学,描述在MATLAB中执行这些任务的内置函数。
作图、图像和GUI
本书首先介绍简单的二维作图(第3章),这样作图的例子可以贯穿全书。第11章将给出更多的作图类型并阐述定制作图和在MATLAB中怎样处理图形属性,这一章使用字符串和单元(cell)数组来定制标签。在第13章中对图像处理和理解图形用户界面(GUI)编程的基础知识进行介绍。
向量化代码
MATLAB内置操作符和函数功能的有效使用都在书中做了演示。为了强调有效使用MATLAB的重要性,对编写向量化代码所需的概念和内置函数提前到了第2章。然后在第5章中采用一些技巧如预先分配向量和使用逻辑向量,替代向量和矩阵中的选择语句和循环语句。同时还介绍了怎样才能使代码有效的方法。
全书布局
全书分为两部分。第一部分介绍编程结构,并阐述编程与解决问题的内置函数的有效使用。第二部分讲述应用,包括作图、图像处理和解决基础问题所需要的数学知识。前6章包括MATLAB中和编程中非常
收起全部↑