前 言
MATLAB是当前最常用的一种编程语言,它既可进行面向过程的编程,以实现某个具体的功能(如绘图等),也可以进行面向对象编程,以加快大型软件的开发与实现。当前,涉及MATLAB各种应用的图书层出不穷:有针对MATLAB数值分析的、有使用MATLAB进行图像处理的,各类指南、宝典、入门、视频教程等林林总总,不一而足。这些著作各有所长,值得借鉴,在此基础上,我们试着写这样一本MATLAB的是,试图克服其中的一些不足。
(1)规范性问题
编程,除了要编写一段代码实现必须完成的基本任务(如计算、绘图、模拟等)之外,还要搞好辅助的任务,所谓辅助任务,就是对代码进行各种规范性的处理。例如,对于函数的讲解,许多著作都讲述了编写函数的过程,也给出了具体地实现,但是,很少有专门就代码的规范性进行讨论的。我们认为,做好外围辅助(编写帮助说明文件等)与实现代码的基本功能同等重要,因此,我们专门讨论了函数文件的规范性书写,要求在编写完整的函数时,都要给出规范化的解释说明,这种格式贯穿全书,以多次重复加深读者的印象。对于面向对象中类的定义,也需要进行规范化处理,关于规范性更详细的说明,读者可阅读本书中关于函数和类等章节中的相关内容。
(2)缺乏人文情怀
一提到编程,许多人都会认为是理工类的教材或著作,无需考虑它的文学性。然而,在当前社会发展与工作中,要求人员具体综合素质、全面发展,而不仅仅是理工男。我们认为,人文社交知识也是一种能力,文学修养有助于提高理工学生自身的素质,即使是面向理工科学生的编程教材,也有必要考虑其文学艺术性。例如,在讲授处理字符串的命令时,如果使用一段毫无意义的字符串作为例子(比如abcdefg qwertyu ahuehixn),虽然也能讲述清楚命令的使用,但肯定不如使用有积极意义的格言警句(比如Everything is good in its season.万物逢时皆美好)作为示例内容更让人觉得赏心悦目。因此,在本书中,凡是涉及字符串的学习内容,都会尽可能选择一些读来琅琅上口的名言、对联、诗句、古文等作为例句,让读者在MATLAB的学习中品味文学,感受人文情怀。
(3)探讨性讲解
同一个知识点,可以采用不同的方式进行讲解。既可以采取居高临下、平白直叙的方式,直接告诉读者是什么,也可以通过一个探索的过程,让作者与读者站在同一个高度,一起去挖掘出这个知识点。这两种不同的教学方式,会给读者留下不同的印象。多数MATLAB的教科书中,都是直接告诉读者是什么,缺少了探索、参与的过程。因此,本书在解释知识点时,尽可能的采用探索式的讲解方式(略口语化),让作者和读者一起,在挖掘知识点的过程中,逐渐加深理解,达到掌握。因为知其然,总不如知其所以然更让人印象深刻,参与挖掘知识点,总比旁观更有体验感。当前的年轻读者,更注重体验与参与,本书在这个方面也做了一点有益的探索。
之所以要编写这本详解,除了上述的几点之外,还因为当前MATLAB编程的各种教材中,许多命令并未给出详细的使用说明。也许有读者认为查看MATLAB的帮助文件即可,但是,我更倾向于这样的观点,即每学习一个函数命令,就要完整的学习它的各种使用方法。本书试图通过多个常用函数这种详细地学习过程,让读者完整掌握其基本使用方法,还借助这种学习,养成一个习惯,即全面掌握每一个知识点。因此,本书在介绍每一个函数时,都会不厌其详的介绍其具体使用。
记起在2000年读博士期间的一段编程经历,因为不太熟悉,一段长约500行的嵌入代码(其他语言编写),无论如何调试,都无法得到正确的结果,因为在调试时,逻辑上检查不出任何问题,语法上也没有错误,整整10余天,没有任何进展,即便是多次重写代码,也无法达到目的。最后,只好逐个字符的验证,才发现是最后的一个标点符号导致了逻辑改变。我至今仍然记得修改完毕那段代码后,自责与反省让人彻夜难眠,一是自责自己没有完整掌握那种语言详细的使用方法,二是反省自己在以后的工作中要仔细认真。细想起来,这也是写这本书时,对每一个函数进行详解的另一个原因吧。
在本书编写过程中,河北大学生命科学学院任国栋教授多次关心编写进度,并给予许多鼓励与帮助。电子工业出版社的编辑对本书的出版付出了辛勤的工作,对于他们的支持与帮助,表示衷心的感谢。本书的出版,还得到了本科教学工程专业综合改革试点专项资金的支持,在此一并表示深深的感谢。
自2015年9月开始,近一年的时间,每日兢兢业业,力图使内容完美无缺,但我知道,囿于本人的水平有限,其中错误在所难免,敬请读者批评指正。