1.1 MATLAB简介
MATLAB最初是由克利夫·莫勒(Cleve Moler)用Fortran语言设计的,有关矩阵的算法来自LINPACK和EISPACK课题的研究成果。现在的MATLAB是MathWorks公司用C语言开发的。本节主要介绍MATLAB的发展、优点及缺点。
1.1.1 MATLAB的发展
起初,MATLAB是专门用于矩阵运算的一种数学软件,伴随着MATLAB的市场化,其功能也越来越强大,从MATLAB 4.1开始,MATLAB开始拥有自己的符号运算功能,从而可以代替其他一些专用的符号运算软件。
在MATLAB环境下,用户可以进行程序设计、数值计算、图形绘制、输入/输出、文件管理等多项操作,MATLAB还提供了数据分析、算法实现与应用开发的交互式开发环境。
20世纪70年代中期,美国新墨西哥州立大学计算机系主任Cleve Moler博士和其同事在美国国家科学基金会的资助下,开发了调用LINPACK和EISPACK的Fortran子程序。20世纪70年代后期,Cleve Moler博士编写了相应的接口程序,并将其命名为MATLAB。
1983年,杰克·利特尔(Jack Little)、Cleve Moler、史蒂夫·班格特(Steve Bangert)等一起合作开发了第2代专业版MATLAB。1984年,Cleve Moler博士和一批数学专家、软件专家成立了MathWorks公司,继续MATLAB软件的研制与开发,并着力将软件推向市场。
1987年,MathWorks公司推出了MATLAB 4.1,1996年推出了MATLAB 5.0,2001年推出了MATLAB 6.x,2004年推出了MATLAB 7.0。
2020年3月,MathWorks公司推出了MATLAB R2020a,简化了安装流程并新增了大量功能。MATLAB R2020a是针对专业的研究人员打造的一款实用数学运算软件,提供了丰富的数学符号和公式,并且与主流的编程软件兼容。
1.1.2 MATLAB的优点
与其他的计算机高级语言相比,MATLAB有着许多非常明显的优点,介绍如下。
1.简单易学
MATLAB允许用户以数学形式的语言编写程序,用户在命令行窗口中输入命令即可直接得到结果,这比C、Fortran和Basic等高级语言都要方便得多。由于它是用C语言开发的,它的流程控制语句与C语言中的相应语句几乎一致,所以,初学者只要有C语言的基础,就会很容易掌握MATLAB语言。
2.简短、高效的源代码
由于MATLAB已经将数学问题的具体算法编成了现成的函数,用户只要熟悉算法的特点、使用场合、函数的调用格式和参数意义等,通过调用函数很快就可以解决问题,而不必花大量的时间“纠缠”于具体算法的实现。
3.强大的矩阵运算功能
MATLAB具有强大的矩阵运算功能,利用一般的符号和函数不仅可以对矩阵进行加、减、乘、除运算,以及转置、求逆运算,而且可以处理稀疏矩阵等特殊的矩阵,非常适合有限元等大型数值算法的编程。此外,该软件现有的工具箱,可以用于解决实际应用中的大多数数学问题。
4.强大的图形表达功能
MATLAB不仅可以绘制一般的二维/三维图形,如线图、条形图、饼图、散点图、直方图等,还可以绘制工程特性较强的特殊图形,如玫瑰花图、极坐标图等。科学计算会涉及大量的数据处理,利用图形展示数据的特性,能显著提高数据处理的效率,提高对数据反馈信息的处理速度和能力。MATLAB提供了丰富的科学计算可视化功能,利用它,不仅可以绘制二维/三维矢量图、等值线图、三维表面图、假色彩图、曲面图、云图、二维/三维流线图、三维流锥图、流带图、流管图、切片图等,还可以生成快照图和进行动画制作。基于MATLAB句柄(handle)图形对象,结合绘图工具函数,可以根据需要用MATLAB绘制相应的图形。
MATLAB也具有符号运算功能,特别是MATLAB R2020a在这方面的功能丝毫不逊色于其他的相关软件,如Mathematic和Mathcad等。因此,用户只需掌握MATLAB R2020a,就几乎可以解决学习和科研中的所有符号运算问题,不必再专门学习一门符号运算语言。同时由于有了Maple和MATLAB之间的接口,符号运算问题得到了更好的解决。
5.可扩展性强
可扩展性强是MATLAB的一大优点,用户可以自己编写脚本文件(M文件),构建自己的工具箱,方便地解决本领域内常见的计算问题。此外,利用MATLAB编译器和运行时服务器,可以生成独立的可执行程序,从而隐藏算法并避免依赖MATLAB。MATLAB支持动态数据交换(Dynamic Data Exchange,DDE)和ActiveX自动化等机制,可以与同样支持该技术的应用程序进行接口。
6.丰富的内部函数和工具箱
MATLAB的内部函数库提供了相当丰富的函数,这些函数可以解决许多基本问题,如矩阵的输入。在其他语言中(如C语言),要输入一个矩阵,先要编写一个矩阵的子函数,而MATLAB语言则提供了人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩阵对象的时候,不要求进行明确的维数说明。与利用C语言或Fortran语言编写数值计算的程序设计相比,利用MATLAB可以节省大量的编程时间。这会给用户节省很多的时间,使用户能够把自己的精力放在创造方面,而把烦琐的问题交给内部函数来解决。
除了这些丰富的基本内部函数外,MATLAB还有为数不少的工具箱。这些工具箱用于解决某些特定领域的复杂问题,如使用Wavelet Toolbox进行小波理论分析,或者使用Financial Toolbox进行金融方面问题的研究。同时,用户可以通过网络获取更多的MATLAB程序。
7.支持多种操作系统
MATLAB支持多种计算机操作系统,如Windows操作系统或许多不同版本的UNIX操作系统,而且,在一种操作系统下编制的程序转移到其他的操作系统下时,程序不需要进行任何修改。同样,在一种平台上编写的数据文件转移到另外的平台时,也不需要进行任何修改。因此,用户编写的MATLAB程序可以自由地在不同的平台之间转移,这给用户带来了很大的方便。
8.可以自动选择算法
在使用其他语言编写程序时,用户往往会在算法的选择上费一番周折,但在MATLAB里,这个问题则不复存在。MATLAB的许多功能函数都带有算法的自适应能力,它会根据情况自行选择最合适的算法,这样,当使用其他程序时,因算法选择不当而引起的如死循环等错误,在使用MATLAB时可以在很大程度上得以避免。
9.与其他软件和语言有良好的连接
除了上面所提的MATLAB与Maple的连接外,MATLAB与Fortran、C和Basic之间都可以很方便地实现连接,用户只需将已有的EXE文件转换成MEX文件即可。可见,尽管MATLAB除自身已经具有十分强大的功能之外,它还可以与其他软件和语言实现很好的“交流”,这样可以最大限度地利用各种资源的优势,从而使得用MATLAB编写的程序能够达到最大程度的优化。
1.1.3 MATLAB的缺点
MATLAB的缺点主要体现在两个方面。
首先,由于MATLAB是一种合成语言,因此,与一般的高级语言相比,用MATLAB编写的程序运行起来所用的时间往往要多一些。当然,随着计算机运行速度的不断提高,这个缺点正在逐渐弱化。而且,由于用户使用MATLAB编写程序比较节省时间,因此从编写程序到运行完程序的总的时间来说,使用MATLAB仍然比使用其他语言节省时间。
其次,虽然MATLAB这套软件比较贵,一般的用户可能支付不起它的高昂费用,但是,由于MATLAB具有极高的编程效率,因此购买MATLAB的昂贵费用在很大程度上可以由使用它所编写的程序的价值抵消。所以,就性价比来说,MATLAB绝对是物有所值。但MATLAB对于一般的用户来说,仍然显得过于昂贵。幸运的是,MATLAB的开发公司还发行了一种比较便宜的MATLAB学生版,这对广大想学习和使用MATLAB的用户来说,无疑是一个极好的消息。MATLAB学生版与MATLAB的基本版几乎一样,可以解决很多科研和学习中遇到的问题。
总而言之,相对于MATLAB的优点来说,它的缺点是微不足道的,而且,随着MATLAB版本的不断升级,它的缺点已经变得越来越不明显。掌握MATLAB,必将给我们的学习、科研和工作带来极大的帮助。