1.1 MATLAB中的科学计算概述
MATLAB是一种功能非常强大的科学计算软件。在正式使用MATLAB之前,我们应该对它有一个整体的认识。
MATLAB的命令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解决问题要比用仅支持标量的非交互式的编程语言(如C、FORTRAN等语言)简捷得多,尤其是在解决包含了矩阵和向量的工程技术问题时。在大学中,MATLAB是很多数学类、工程类和科学类的初等和高等课程的标准指导工具。在工业上,MATLAB是产品研究、开发和分析过程中经常采用的工具。
1.1.1 MATLAB的发展历程
20世纪70年代中期,克里夫·莫勒尔(Cleve Moler)博士及其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。EISPACK是求解特征值的程序库,LINPACK是求解线性方程的程序库。当时,这两个程序库代表矩阵运算的最高水平。
20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的莫勒尔教授在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间。出于减轻学生编程负担的目的,他为学生设计了一组调用LINPACK和EISPACK程序库的“通俗易用”的接口,即用FORTRAN编写的萌芽状态的MATLAB。在此后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。
1983年,莫勒尔教授、工程师约翰·利特尔(John Little)和斯蒂夫·班格尔特(Steve Bangert)一起用C语言开发了第二代专业版MATLAB,使MATLAB同时具备了数值计算和数据可视化(图形化)的功能。
1984年,莫勒尔和利特尔成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。从这时起,MATLAB的内核采用C语言编写。
1993年,Math Works公司推出MATLAB 4.0,从此告别DOS版。MATLAB 4.x在继承和发展其原有的数值计算和数据可视化的同时,出现了几个重要变化:推出了交互式操作的动态系统建模、仿真、分析集成环境——Simulink;开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路;推出了符号计算工具包;构造了Notebook。
1997年,MATLAB 5.0问世,紧接着是MATLAB 5.1、MATLAB 5.2,以及1999年的MATLAB 5.3。2003年,MATLAB 7.0问世。与以往的版本相比,现在的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象的开发环境、更快速精良的数据可视化界面、更广博的数学和数据分析资源、更多的应用开发工具。
2006年,MATLAB分别在3月和9月进行了两次产品发布,3月发布的版本被称为“a”,9月发布的版本被称为“b”,即R2006a和R2006b。之后,MATLAB分别在每年的3月和9月进行两次产品发布,每次发布都涵盖产品家族中的所有模块,包含已有产品的新特性和错误(bug)修订,以及新产品的发布。
2020年3月,Math Works正式发布了R2020a版MATLAB(以下简称MATLAB 2020)和Simulink产品系列的Release 2020(R2020)版本。
1.1.2 MATLAB系统
MATLAB系统主要包括以下5个部分。
(1)桌面工具和开发环境:MATLAB由一系列工具组成,这些工具大部分是图形用户界面,方便用户使用MATLAB的函数和文件,包括MATLAB桌面和命令行窗口,编辑器和调试器,代码分析器和用于浏览帮助、工作空间、文件的浏览器。
(2)数学函数库:MATLAB数学函数库包括了大量的计算算法,从初等函数(如加法、正弦、余弦等)到复杂的高等函数(如矩阵求逆、矩阵特征值、贝塞尔函数和快速傅里叶变换等)。
(3)语言:MATLAB是一种高级的基于矩阵/数组的语言,具有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用户可以在命令行窗口中将输入语句与执行命令同步,以迅速创立快速抛弃型程序,也可以先编写一个较大的复杂的M文件后再一起运行,以创立完整的大型应用程序。
(4)图形处理:MATLAB具有应用方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。它的高级作图功能包括二维和三维的可视化、图像处理、动画和表达式作图;低级别作图功能包括完全定制图形的外观,以及建立基于用户的MATLAB应用程序的完整图形用户界面。
(5)外部接口:外部接口是一个使MATLAB能与C语言、FORTRAN等其他高级编程语言进行交互的函数库,它包括从MATLAB中调用程序(动态链接)、调用MATLAB为计算引擎和读写mat文件的设备。