
1.1 MATLAB概述
MATLAB是以线性代数软件包LINPACK和特征值计算软件包EISPACK中的子程序为基础发展起来的一种开放式程序设计语言,是一种高性能的工程计算语言,其基本的数据单位是没有维数限制的矩阵。
1.1.1 MATLAB的发展历程
20世纪70年代中期,Cleve Moler博士及其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。EISPACK是求解特征值的FOTRAN程序库,LINPACK是求解线性方程的程序库。在当时,这两个程序库代表了矩阵运算的最高水平。70年代后期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授在给学生讲授线性代数课程时,想教给学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时。出于减轻学生编程负担的目的,他为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,这便是处于萌芽状态的MATLAB。在此后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。
1983年春天,Cleve Moler教授到斯坦福大学讲学,他所讲授的关于MATLAB的内容深深地吸引了工程师John Little。John Little敏锐地觉察到MATLAB在工程领域的广阔前景,同年,他和Cleve Moler、Steve Bangert一起用C语言开发了第二代专业版MATLAB。这一代MATLAB语言同时具备了数值计算和数据图示化的功能。
1984年,Cleve Moler和John Little成立了MathWorks公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。从这时起,MATLAB的内核采用C语言编写。
MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和可靠性将原先控制领域里的封闭式软件包(如UMIST、LUND、SIMNON、KEDDC等)纷纷淘汰,而改以MATLAB为平台加以重建。20世纪90年代初期,MathWorks公司顺应多功能需求的潮流,在其卓越数值计算和图示能力的基础上又率先拓展了符号计算、文字处理、可视化建模和实时控制能力,开发了满足多学科要求的新一代产品。经过多年的发展,在国际上30多个数学类科技应用软件中,MATLAB已经占据了数值软件市场的主导地位。
MathWorks公司于1993年推出MATLAB 4.0版本,从此告别DOS版。
1997年春,MATLAB 5.0版问世,紧接着是5.1、5.2,以及1999年春的5.3版。2003年,MATLAB 7.0版问世。
2006年开始,MATLAB分别在每年的3月和9月进行两次产品发布,每次发布都涵盖产品家族中的所有模块,包含已有产品的新特性和Bug修订,以及新产品的发布。其中,3月发布的版本被称为“a”,9月发布的版本被称为“b”,2006年的两个版本分别是R2006a和R2006b。
2012年,MathWorks推出了MATLAB 7.14版,即MATLAB R2012a版。
2018年3月,MathWorks正式发布了R2018a版MATLAB和Simulink产品系列的Release2018(R2018)版本。
2020年3月,MathWorks正式发布了R2020a版MATLAB(以下简称MATLAB 2020)和Simulink产品系列的Release 2020(R2020)版本。
1.1.2 MATLAB系统
MATLAB系统主要包括以下五个部分。
1)桌面工具和开发环境:MATLAB由一系列工具组成,这些工具大部分是图形用户界面,方便用户使用MATLAB的函数和文件,包括MATLAB桌面和命令窗口、编辑器和调试器、代码分析器和用于浏览帮助、工作空间、文件的浏览器。
2)数学函数库:MATLAB数学函数库包括了大量的计算算法,从初等函数(如加法、正弦、余弦等)到复杂的高等函数(如矩阵求逆、矩阵特征值、贝塞尔函数和快速傅里叶变换等)。
3)语言:MATLAB语言是一种高级的基于矩阵/数组的语言,具有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用户可以在命令窗口中将输入语句与执行命令同步,以迅速创立快速抛弃型程序,也可以先编写一个较大的复杂的M文件后再一起运行,以创立完整的大型应用程序。
4)图形处理:MATLAB具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。它的高层次作图包括二维和三维的可视化、图像处理、动画和表达式作图。低层次作图包括完全定制图形的外观,以及建立基于用户的MATLAB应用程序的完整图形用户界面。
5)外部接口:外部接口是一个使MATLAB语言能与C、FORTRAN等其他高级编程语言进行交互的函数库,它包括从MATLAB中调用程序(动态链接)、调用MATLAB为计算引擎和读写mat文件的设备。
1.1.3 MATLAB语言的特点
MATLAB提供了一种交互式的高级编程语言——M语言,用户可以利用M语言编写脚本或用函数文件来实现自己的算法。
一种语言之所以能够如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称为第四代计算机语言的MATLAB,利用其丰富的函数资源,把编程人员从烦琐的程序代码中解放了出来。MATLAB最突出的特点就是简洁,它用更直观的、符合人们思维习惯的代码,代替了C语言和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观、最简洁的程序开发环境。下面简要介绍一下MATLAB的主要特点。
1)语言简洁紧凑,库函数极其丰富,使用方便灵活。MATLAB程序书写形式自由,利用丰富的库函数避开了繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性问题。可以说,用MATLAB进行科技开发就是站在专家的肩膀上搞科研。
利用FORTRAN或C语言去编写程序,尤其是当涉及矩阵运算和画图时,编程会很麻烦。例如,用FORTRAN和C这样的高级语言编写求解一个线性代数方程的程序,至少需要400多行代码,调试这种代码达几百行的计算程序很困难,而使用MATLAB编写这样一个程序则很直观简洁。
MATLAB的程序极其简短,更难能可贵的是,MATLAB甚至具有一定的智能效能,比如解一些方程时,MATLAB会根据矩阵的特性选择方程的求解方法。
2)运算符丰富。MATLAB是用C语言编写的,它提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
3)MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。
4)程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。
5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
6)图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。
7)与其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以程序的执行速度较慢。
8)拥有功能强大的工具箱。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数;工具箱又分为功能性工具箱和学科性工具箱两类。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户可以无须编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。
9)源程序具有开放性。