2008年9月22日星期一

matlab 6.x版前言

1.MATLAB的发展历程和影响
MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。
经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。
MATLAB以商品形式出现后的短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包纷纷淘汰,而改在MATLAB平台上重建。在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。Mathcad因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。
MathWorks公司于1993年推出了基于Windows平台的MATLAB4.0。4.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:(1)推出了SIMULINK,一个交互式操作的动态系统建模、仿真、分析集成环境。(2)推出了符号计算工具包。一个以Maple为“引擎”的Symbolic Math Toolbox 1.0。此举结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。(3)构作了Notebook 。MathWorks公司瞄准应用范围最广的Word ,运用DDE和OLE,实现了MATLAB与Word的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。从1997年春的5.0版起,后历经5.1、5.2、5.3、6.0、6.1等多个版本的不断改进,MATLAB“面向对象”的特点愈加突出,数据类型愈加丰富,操作界面愈加友善。2002年初夏所推6.5版的最大特点是:该版本采用了JIT加速器,从而使MATLAB朝运算速度与C程序相比肩的方向前进了一大步。
假如说,在上世纪九十年代,新、老一代教科书的区别性标志是“教材是否包含MATLAB内容”,那末进入二十一世纪后,MATLAB对教材的影响又以崭新的形式出现:新教材正在更彻底地摒弃那些手工计算、计算尺计算、手摇或电动计算机、电子模拟计算机时代建立的“老的但久被当作经典的”表述、分析和计算方法;而逐步地建立以现代计算工具(包括软硬件)为平台的新的表述、分析和计算方法,其中包括采用交互式图形用户界面去完成各种表述、分析和计算目的。
2.本书沿革
 1992年编写并印刷《科技编程语言KINDTOOL》讲义,约20万字。KINDTOOL由DOS环境下的MATLAB3.0经汉化而得。
 1997年写成《掌握和精通MATLAB》,约51万字;该书全面介绍了Windows平台上的MATLAB4.2c。该书由北京航空航天大学出版社于1997年8月公开发行,前后印刷5次,共发行17000册。
 2000年写成《精通MATLAB5.3》,约90万字。该书全面详尽、层次丰满;它阐述了MATLAB5.3版的几乎全部通用功能。该书附带光盘,大大扩展了该书的实用价值。该书由北京航空航天大学出版社于2000年8月公开发行,前后印刷3次,共发行9000册。
 2001年4月,又以MATLAB6.0为基础,编写出版了《MATLAB教程》,约53万字;该书是为满足教材使用和简明自学需要而编写的。其特点是:全面完整而精练简明;系统流畅又配备自测习题;内容稳定又及时适应MATLAB最新版本。2002年2月再次印刷时,该书已在MATLAB6.1基础上加以修订。该书至今发行10000册。
 2002年12月,以MATLAB6.5为基础出版本书。
2.本书的编写宗旨
 全面反映MATLAB最新版本的通用功能,淡化学科性强的专用功能;
 着力描绘各指令间的协调配合,少费笔墨于指令用法的笼统解释;
 寓教于例,由浅入深;既讲机理,又讲程式规则;
 关于科学计算,着重强调理论概念、教材算法和实际计算三者间的关系,着重强调现代计算工具(软、硬件)对传统计算、设计方法的影响和冲击;
 诚实面对读者,所有算例都经反复运作验证,而决非转抄潦草之作;
 为方便读者学习、使用,随书光盘包含了全书的所有算例文件,可在MATLAB或Notebook环境中直接运行。
以上编写宗旨是作者多年写作养成的传统和风格。作者因此得到广大读者的有力支持和赞誉。特别是随书光盘给读者带去的彩色和可靠易用的程序更受欢迎。
3.全书结构、梗概及新增内容
(1)全书的结构和功用
全书由“前言”、“目录”、“正文”、“附录”、“参考文献”和“随书光盘”组成。
 “目录”
目录由四级标题构成。通过目录,读者可以清晰地看到正文内容的完整框架,方便地查到所需内容的位置。
 “正文”
全书共分十三章,包含算例390多个。章节内容是遵循“由浅入深”、“相对独立”和“算例引导”原则安排的。从全书看,概念相对简单的篇章安排在前;每章中,操作比较容易的节次安排在前。新版算例算例“深浅”层次远比前版丰富。每章的入门或前一、二节的简单算例,总可以让读者轻松地学会MATLAB的各种功能的初步使用,不管读者原先用过MATLAB与否。而配置在各章中的综合算例,将向读者展示MATLAB解决复杂问题的可能途径,引导读者向纵深发展。正文内容的安排既考虑了系统讲授的需要,又考虑了不同水平读者自学和查阅的需要。
新、旧版的章节区别:(1)旧版第一章“概论”被整章删除,其内容被大幅删简后融在前言中。(2)本书第十二章“应用程序接口API”是根据MATLAB6.5新写的。(3)本书其余各章的名称与旧版相对应,但其内容都以6.5为基础进行了修改和增补。
 附录A “索引”
它汇集了本书涉及的所有MATLAB标点符号、函数指令、SIMULINK库模块、图形对象属性、以及用于API的各种指令。它们(除标点符号外)根据英文字母的次序罗列。每个英文指令(或符号、属性、模块)后,罗列着那指令以不同方式被介绍、使用的具体节次。这“索引”主要用做英文关键词查阅。
 附录B “光盘使用说明”
它详细介绍光盘文件的种类、工作环境和使用方法。
 “参考文献”
列出了本书成文的文献基础。读者如有疑惑或想寻根求源,这部分资料十分有用。
 “随书光盘”
盘上存放着约700多个文件。它们提供了印刷版对应算例运行的几乎所有文件。
(2)正文概要
 “第1章基础准备及入门”专门介绍最常用的交互界面:通用指令窗、历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、及帮助导航/浏览器。
本章内容与旧版完全不同。这是因为6.5版向用户提供前所未有的、成系列的交互式工作界面。了解、熟悉和掌握这些交互界面的基本功能和操作方法,将使新老用户能事半功倍地利用MATLAB去完成各种学习和研究。
 “第2章数值数组及其运算”集中叙述一维、二维、任意高维双精度数值数组的生成和操作。这是MATLAB最常用最基本又最传统的数据类型,定义在此类“对象”上的“方法”就是最具魅力的数组运算。本章所涉内容和方法,不仅使用于数值数组,而且也将延伸使用于在其他数据结构中。
MATLAB6.5运用新的逻辑数据类型,大大扩充了逻辑运算指令。
 “第3章字符串、元胞和构架数组”系统阐明这些数据类型的基本性质、用法要旨。本书作者提醒读者不要小视这第3章。原因之一是“构成MATLAB指令的M文件”中就大量使用这些数据类型。只有理解这些数据类型才能真正灵活运用MATLAB指令,尤其是那些泛函指令、图形对象、图形用户界面的各种控件等。
应该指出:MATLAB6.5的数据类型有较大变化。本书反映了这种变化。
 “第4章数值计算”的篇幅在本书所有章节中最长,因为正是这顶级水准的数值计算使MATLAB立身于世界、称雄于天下。本章对数学问题的描述遵循“最低限度自封闭”原则,即以最简明的方式阐述理论数学、数值数学和MATLAB计算指令间的内在联系和差别。比如在讨论线性方程解时,本书总是先回顾性地列出若干常见的“教科书解法”,并指出这些理论算法在实际应用中的缺陷,然后在简述数值计算原理的基础上给出精良的MATLAB计算指令。
对于第4章涉及较宽知识的地方,本书都配置了综合性算例。跟随着解题步骤,读者不难掌握MATLAB所提供的相关解题指令和工具。但本书作者在此提醒:本章部分内容的知识跨度可能较大,读者不必企求一口气读完或读懂本章的所有内容。
随着MATLAB从5.3升级到6.5版,本章内容有三个重要变化:(A)由于MATLAB数值计算基础软件库变化,导致许多数值计算结果在前后版本不同;(B)泛函指令对函数的操作借助新引进的“函数句柄”实施;(C)新增了微分方程边值问题求解的内容。
 “第5章符号计算”内容受MATLAB版本升级影响较小,但也有细微变化。这种内容变化反映在第5.4.1节。符号计算与理论数学的演绎过程相似,读者很容易掌握。本章内容包括:各种代数方程、微分方程的求解,解析微积分的求取,Fourier、Laplace变换的封闭表达式,任意精度的数值解等。
 “第6章数据和函数可视化”围绕数据成图机理、绘图要旨和修饰技法系统介绍“高层”绘图指令和交互操作工具。作者是通过60来个算例向读者展示的。
MATLAB从5.x向6.5版本升级后,旧版中的本章全部内容几乎可以不加修改地用于6.5版。但为适应升级,新版作了如下改变:(A)新增了控制图形对象“面”、“块”、“象”透明属性的内容,进一步增强了图形感染力。(B)新增了关于unit8, unit16数据类型进行图像数据存储的内容;(C)对MATLAB升级后图形窗界面的编辑功能进行了新的全面阐述。
 “第7章M文件和面向对象编程”的内容在理解MATLAB自身和应用MATLAB两方面都有十分重要的作用。本章只用很少篇幅对MATLAB传统控制流进行简述,而大量的篇幅用于阐述新功能:较特殊的控制流;变长度输入输出宗量;跨空间运作的串演算指令和赋值指令;内联函数、子函数、私有函数和P伪码文件;M文件编辑调试器;程序运行性能剖析器;面向对象编程技术。
本章新版最主要的变化是:增加了关于函数句柄如何创建和如何使用的内容;根据MATLAB6.5重写了程序运行剖析器;采用算例展示了6.5版特具的JIT加速器的作用。
 “第8章SIMULINK交互式仿真集成环境”系统介绍建模和分析方法,特别着重于阐述:模型处理向量信号的能力;借助简装和精装子系统进行的“分层”建模方法;复杂系统建模中不可缺少的逻辑关系运算和“使能”、“触发”技术;SIMULINK与MATLAB的协调运作。
本章内容新旧版的变化主要表现在三方面:(A)由于伴随MATLAB的SIMULINK全面升级,SIMULINK的库界面和内容发生较大的变化,所以本章旧版的内容已在MATLAB6.5基础上全面更新;(B)涉及“条件执行子系统”的内容被全部更新;(C)为适应读者应用水平的提高,新增了第8.8节,专门论述S函数模块的创建和使用。
 “第9章句柄图形”讲述图、轴、线、面、方、块、象、字、光等九种基本图形对象。与第6章的高层指令相比,本章的内容深入MATLAB可视化功能的内核。本章目的:一,使读者更深入理解高层绘图指令,从而绘制出更精细更生动更个性的图形;二,使读者能利用低层图形指令和图形对象属性开发专用绘图函数。
本章新旧版之间没有实质性的变化,但新版已在MATLAB6.5基础上进行了若干微小的更新。
 “第10章图形用户界面GUI制作”专门讲述用户菜单、用户控件和图形用户界面的制作。本章内容不仅为制作满足“演示需要”的界面,而更重要的是:为制作“科学分析和综合研究需要”的交互界面。
本章新版完全重写了有关MATLAB提供的“界面设计工作台”的内容。因为,MATLAB6.5版的设计工作台与5.3版完全不同。
 “第11章MATLAB编译器”详细叙述:如何由M文件生成运行得较快的MEX文件;如何由M文件生成能脱离MATLAB环境运行的EXE程序。该章内容对从事应用开发的读者有一定的帮助。
由于MATLAB6.5版采用的编译器已从原先过渡性的2.0 全面升级为3.0,所以本章内容已在Compiler3.0基础上全部重写。
 “第12章应用程序接口API”是为适应读者应用MATLAB水平的提高而新增的一章。它包括:(A)如何把已有的优秀C程序改造成可在MATLAB中方便调用的指令;(B)如何借助MAT文件实现MATLAB与外部应用程序的数据交换;(C)如何在各种其他应用程序中利用MATLAB引擎技术;(D)如何应用ActiveX实现MATLAB与外部应用程序的通信;(E)如何借助DDE技术在MATLAB与其他外部程序间进行通信。
该章完全而且值得指出:MATLAB6.0, 6.1版用于API的(MEX、MAT、及引擎)库函数许多已经被废止。本章内容是根据MATLAB6.5编写的。
 “第13章Notebook”系统地叙述Notebook的安装、启动、和使用;最后一节则专门讲述,如何通过MATLAB、Notebook、PowerPoint三者之间的协调链接来制作科技演讲稿。该章内容对需要撰写科技论文、“电子版”科技著作、多媒体科技演讲稿的读者十分有用。
本章新版内容与旧版大致相同,但有些变化:(A)关于Notebook的安装是针对变化了软件环境重写的。(B)新增一节,专门介绍具有现场计算能力的幻灯片的制作。
(3)本书新版与旧版的主要差别
 本书全部算例的计算结果已在MATLAB6.5上更新。这是因为矩阵和特征值计算指令不再以LINPACK和EISPACK库为基础,而建筑在计算速度更快、运行更可靠的LAPACK和ARPACK程序库的新基础上。
基础软件库变化所产生的影响明显地表现在矩阵分解、特征向量、奇异向量等的计算结果不同上,也影响到隐性使用LAPACK和ARPACK的那些指令(如矩阵对数指令等)的计算结果。本书新版可保证读者在MATLAB6.5环境下完全重现本书算例结果。
 新版紧随MATLAB升级,(A)增加了一节“求解微分方程边值问题”的内容;(B)介绍了新的积分指令quadl和triplequad ;(C)增添了一节如何对图形进行透明度控制的内容;(D)用一节篇幅全面阐述新数据类型“函数句柄”的创建和使用;(E)完全重写了MATLAB编译器那章的内容;(F)完全重写了程序性能剖析器,并展示了6.5版的JIT加速功能。
 MATLAB升级使其所有交互界面都发生了较大变化,因此本书新版相应章节也作了如下变动:(A)“第一章基础准备及入门”是完全新写的;(B)关于“图形窗编辑功能”那节的内容是新写的;(C)关于“SIMULINK模块库和模型窗界面”的内容是重写;(D)关于“GUI设计工作界面”的内容是完全新写的。
 为适应读者对MATLAB理解和应用水平的提高,新版有如下变化:(A)新添一节关于“uint8, unit16数据类型在图像存储中应用”的内容;(B)新写一节关于“S函数在SIMULINK中应用”的内容;(C)新增一章关于“应用程序接口API”的内容;(D)在Notebook那章中新增一节,专门介绍在放映过程具有计算能力的幻灯片的制作。
 附录进行了内容的增补和更新。
4.本书的读者对象和使用建议
MATLAB自身性质决定了本书的主要读者对象是:需要数学计算、数学函数或计算结果可视的各类大学生、研究生、教师、研究人员和科技工作者。
本书内容的自封闭性、390多个算例和完善的检索系统和随书光盘,使本书既能用做教材或自学用书,又能当作实践MATLAB的软件环境。本书内容不仅可作为MATLAB使用方法的参考手册,而且也可当作科学计算方法的选用参考。
MATLAB自身的很强综合性决定了本书有较大的知识跨度。书中有的章节涉及较深的数学,有的则涉及较多C或其他软件的知识;有的章节要求对微分方程有较好的理解,有的则需要对计算机色彩系统有较好的认识。作者在编写本书时,充分考虑了MATLAB的这种特点,也考虑了多方面读者的不同层次需要,在书中所有需要高层次知识的地方配置了相对简单的引导性算例。这样处理后,不管读者原来的知识背景如何,他们只要循着算例所给指令进行操作,就至少能直观地感受到那些指令的运作结果。假如再认真地阅读指令后的注解说明,他们就能举一反三,更好地掌握利用MATLAB解决那类问题的技法。
当本书用做自学材料时,建议读者先从比较简单的内容开始。这部分内容一般被安排在每章的前一、二节。本书作者还建议自学者特别注意对书中所给算例的实践,注意通过算例去感悟一般规则。
当本书用做本科生教材时,应注意避开那些涉及较深数学的节次,如第5章中的奇异值分解、多项式拟合和非线性最小二乘、插值等内容。此外,由于第8、9、10、11、12章的应用场合比较专业,所以一般也不必列为本科教学内容。
当本书被用做研究生教学参考书时,应根据不同学科研究生的知识背景对本书内容作一定的取舍。
当本书被当作参考手册使用时,分类检索可从书前“目录”进行,而指令、模块、属性等关键词检索则应从书后“索引”着手。书中的大量应用实例与MATLAB自身帮助文件有很强的互补性。
5.随书的光盘文件
引入光盘的指导思想是:营造一个与印刷版对应的软件环境,使读者能从“可直接运作的”不同形式的光盘文件中,更快更好地掌握和理解MATLAB。
光盘装载着容量约70M,各类文件约700多个。这些文件可引出Notebook环境;可引出交互界面;可引出SIMULINK模型、运行界面;可引出编译环境、产生独立应用程序;可引出把幻灯放映、Word文字处理、MATLAB计算结合在一起的综合环境。
引入光盘解决了印刷版的如下几个问题:(1)印刷版很难(甚至无法)表述MATLAB不断升级后的“交互”能力。(2)印刷版很难以低价格表现文件或计算结果中的“色彩”信息。(3)印刷版很难提供完整的SIMULINK模型文件。(4)印刷版无法提供由编译而得的MEX文件和能独立运行的EXE文件。(5)印刷版很难提供API中的很多其他应用程序的文件。
此外,光盘提供的文件可作为读者练习时的参照物,便于读者找出自己编写指令或文件运行失败的原因。
本随书光盘内容曾被个别书籍大量复制剽窃。这类事情的发生给作者带来很大伤害。但作者在权衡光盘的利弊后,坚持原宗旨不变:为方便读者,继续携带随书光盘。望得到广大读者的支持和配合。
6.本书作者的期望
MATLAB本身是一个藏量极为丰富的资源库。因此,对大多数用户个体来说,一定有部分MATLAB内容看起来是“透明”的,即用户能明白其全部细节;另有些内容表现为“灰色”,即用户虽明白其机理但不懂具体的执行细节;还有些内容则“全黑”,即用户对它们完全无知。本书虽仅涉及MATLAB整体的很小一角,但就是这部分内容就已经构成了对本书作者的严重挑战。
本书新版初稿于2001年夏,后几易书搞。作者在写稿过程中遇到过不少困惑,通过再学习和向专家请教虽克服了它们的障碍,但仍难免错误和偏见。本书所有算例虽经多人在不同PC机上独立运作验证,但仍不敢说百分之百的正确。在此,本书作者肯切期望得到各方面专家和广大读者的指教。作者的电子信箱地址是:zyzh@njupt.edu.cn 。
7.致谢
本书结稿的此时此刻,我首先要感谢的是杨祖樱教授,她以妻子和前版作者的双重身份给予我永恒的支持,是她随时向我提供不同的认知和意见,分担写作中的甘苦。
在本书写作中,我前后几届研究生徐彦琴、曹嵩、汪方盛、凌云、李昌、王俊等都做出很大的贡献。其中徐彦琴、汪方盛的作用尤为突出。他们为本书设计了许多独具匠心的例题,不嫌其烦对全书算例进行运算验证,逐字逐句地对全书内容进行校对。我深深感谢他们为本书所做的一切。
最后要感谢北京航空航天出版社。感谢该社为本书前版所做的一切,感谢该社对作者重写新版所给予的鼓励,感谢该社对作者的理解和支持。




作 者
2002年12月于南京

没有评论: