
前言
MATLAB是一种兼具代码编程和鼠标操作实现基本功能的计算机语言。众多的模块使得它既可以进行面向过程的编程,又可以支持用户用鼠标选定、打开App;既可以实现基本的数据展示与分析,又可以进行面向对象编程,以加快大型软件的开发与实现。
当前,介绍MATLAB各种应用的图书林林总总、层出不穷,但多数都是专门针对特定应用领域的。例如,有专门针对MATLAB数值分析的,有专门介绍MATLAB图像处理功能的,还有各类指南、宝典、入门、速成等视频教程。这些图书针对性强,拿来即用,很好地满足了技术人员快速学习的一些要求,但是作为本科生的教材,却有它们的不足。为此,我们借鉴其“针对性”,并克服这些图书中的不足,为初次接触MATLAB语言的学生、技术人员等,编写了本书。综合起来,本书具有以下特点。
(1)紧跟软件升级。
一种计算机语言有没有旺盛的生命力,从它的“新陈代谢”上就可以看出来。MATLAB自推出以来,近些年每年都推出两个版本,上半年推出a版,下半年推出b版,并不断地引入新命令、废止过时的命令。本书以2020年发布的R2020b为蓝本,全面介绍其中的常用命令,并对新版本中才出现的命令进行了特别说明,如readcell、writecell等已完全替代前几年的xlsread、xlswrite等,符号变量的symvar已完全更改了优选原则,废弃了MUPAD,以及GUI设计被App设计完全取代等。
(2)建立规范性。
编程,除了要编写代码实现必须完成的基本任务(如计算、绘图、模拟等),还要搞好周边服务。所谓周边服务,就是对代码进行各种规范性处理。例如,对于函数的处理,许多图书都讲述了编写函数的过程,也给出了具体实现,但是,很少讨论代码的规范性问题。我们认为,编写好的外围辅助(帮助说明文件等)与实现代码的基本功能同等重要。可以说,规范性的代码不仅能最大限度地减少错误,还能极大地减少重复工作、提高维护效率,“规范就是效率”在这里得到了充分体现。因此,本书在编写完整的函数时,都要给出规范化的解释说明,并刻意引导读者做好这方面的“服务工作”。
(3)兼具文学性。
许多人认为理工类的图书,特别是编程类图书,无须考虑其文学性。然而,在当前社会发展与工作中,人文社交也是一种能力,文学修养有助于提高理工科学生自身的素质。为此,在不影响介绍语法知识的前提下,本书特意加入一些文学性内容。例如,在讲授字符串处理命令时,对选入的字符串进行了筛选,使用了有积极意义的格言警句作为示例,这样安排既实现了字符串的语法说明,又在无形中让读者读起来感到赏心悦目。本书中凡是涉及字符串的语法内容,都尽可能选择一些读来琅琅上口的名言、对联、诗句、古文等作为例句,让读者在文学氛围中实现MATLAB的学习。
(4)增强体验感。
对知识点的介绍,可以采用不同的方式:既可以采取平铺直叙的方式,直接告诉读者是什么,也可以通过探索的过程让读者亲自挖掘出这个知识点。这两种不同的教学方式,会给读者留下不同的印象。本书针对当代年轻读者更注重体验与参与的特点,在解释知识点时,尽可能采用探索式的讲解方式,让读者在挖掘知识点的过程中,逐渐加深理解,直至掌握。因为知其然,总不如知其所以然更让人印象深刻,参与挖掘知识点,总比旁观更有体验感。
(5)坚持详细性。
任何计算机语言,要想正确使用,就必须充分理解命令的使用条件和参数使用格式。我也读过许多介绍编程语言的图书,偶尔会有一种“想看的没看到,不想看的一大堆”的感觉。仔细想来,就是因为那些图书对命令并未给出详细周全的解释。因此,在学习MATLAB语言时,我更倾向于这样的观点:每学习一个函数命令,就完整地学习它的各种使用方法,通过对多个常用函数的详细学习,让读者在完整掌握其基本使用方法的同时,养成一个很好的学习习惯,即全面掌握每一个知识点。因此,本书在介绍函数命令时,都会极其详细地介绍它们的用法。
在本书编写过程中,中国科学院大学温州研究院的石长灿博士和河北省生物工程技术研究中心的井爱芹老师(河北大学),也为本书的编写贡献了智慧与汗水。河北大学生命科学学院给予了大力支持与帮助,“生物学基本建设项目(521100302002)”资助了本书的出版。电子工业出版社的编辑对本书的出版付出了辛勤的工作,对于他们的支持与帮助,表示衷心的感谢。
在书稿付梓之际,虽然校读多次,力图使内容完美无缺,但我们知道,囿于水平,其中错误在所难免,敬请读者批评指正。
编著者
(本书部分示例代码可通过扫描下方二维码获取。)
