MATLAB程序设计及应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 优点

MATLAB作为一种科学计算软件,具有如下优点。

1. 强大的数学计算能力特别是矩阵运算能力

与C/C++、Java等编程语言不同,MATLAB是将数组和矩阵作为基本的操作单元来对待的。因此,在C/C++等编程语言中,加法运算符“+”在最基础的层面上支持的仅仅是单个标量的加法运算。尽管C++等面向对象的编程语言可以通过操作符重载来定义更为复杂的“+”运算,但是这需要编程者额外的编程工作,或者是其他库的支持。而MATLAB编程语言直接将数组和矩阵这样的批量数据的组织形式作为基本的处理单元,因此,在MATLAB中,“+”表示的就是整个数组和矩阵之间的加法,这是MATLAB内生的特性,不需要编程者额外进行任何工作,从而极大地简化了数组和矩阵运算的编程任务,也使得其表达形式与数学公式更为一致,同时也更为简明清晰。

不仅如此,MATLAB数组和矩阵的元素还可以取复数值而不限于实数值,从而使复数相关的运算也变得十分易用。

此外,MATLAB从最初版开始就关注矩阵运算,因此其矩阵运算包括特征根与特征矢量的求取、矩阵求逆等常用而核心的运算,都具有极高的运行效率。实际上,MATLAB在矩阵相关运算方面,一直都是各主要编程语言中最为高效者之一。

2. 语言特性简洁,编程效率高

MATLAB编程语言本身的特性简洁明了,没有引入太多复杂的特性,这一点与C++这样面向对象的编程语言相比显得尤为突出。此外,MATLAB中的数组和矩阵实际上都是“动态”的,因此,在内存管理方面编程者几乎不需要负担多少工作。尽管在空间和时间效率上不一定能保证是最优的,但是不用进行内存管理,将明显减少程序发生内存相关错误的可能,从而使得编程者的代码编写和调试工作变得更为简单和轻松,编程效率可以显著提高,编程者能够将更多精力集中在如何解决实际问题,而不是陷在编程语言本身的技术细节之中。

同时,MATLAB将数组和矩阵作为基本操作单元的处理方式,也使得与批量数据的运算和处理有关的程序变得更为简洁,编程工作量更少。在掌握了MATLAB的矢量化运算技巧之后,在C语言或Java语言中需要一层甚至是多层嵌套的循环才能完成的运算,在MATLAB中也许仅需要寥寥数行就能实现。

3. 交互性好,使用方便

MATLAB又被称为“草稿纸式的计算软件”,它的基本使用方式是命令行式的:在命令窗口中输入一条命令,马上就能执行该命令,并且根据用户的需要可以显示计算的结果。这条命令可以本身是执行一项复杂、完整的计算任务的函数调用,也可以仅仅是一个复杂处理过程中的中间步骤。而利用C/C++或Java等编程语言编程时,在编写了完整或部分的代码后,需要经过编译、链接等操作产生可执行程序,然后才能够实际运行和看到结果。

而且MATLAB的不同程序间的互相调用也十分方便和简单。它提供的每个M文件既是一个函数模块,也是一个完整的可执行程序。因此,它们既可以单独用来执行一项特定的任务,也可以组合起来构成更为复杂的程序。以MATLAB工具箱为例,每个工具箱通常由存放在特定目录下的一系列M函数构成,这个目录实际上起到了在其他编程语言中函数库的作用。

4. 绘图能力强大,能够利用数据可视化有效辅助研究分析

利用MATLAB可以方便地绘制多种常用的二维图形和三维图形,如曲线图、散点图、饼图、柱状图、三维曲线/三维曲面图、伪彩色图等。这些图形不但提供大量数据的直观表示,而且更便于揭示数据间的内在关系。

5. 为数众多的工具箱

MATLAB除了基本的数学计算功能,还以工具箱的形式提供了大量针对特定功能和特定应用领域的工具箱。例如,在MATLAB R2020a中,就提供了包括曲线拟合工具箱、最优化工具箱、符号数学工具箱、统计与机器学习工具箱、深度学习工具箱、强化学习工具箱、并行计算工具箱,以及针对信号处理、图像处理与机器视觉、控制系统、测试测量、射频与混合信号、无线通信、自主系统、FPGA等硬件开发、汽车、航空航天、计算金融学和计算生物学等特定应用领域的工具箱,多达60余个。此外,还包括用于仿真和代码生成等功能的软件和函数或模块库,数量也多达数十个。这些工具箱直接为使用者提供了相关领域的大量较为成熟的算法,从而使得研究者与开发者能够迅速在这些已有成果的基础上,构建自己的解决方案或新的算法。

6. 开放性好,便于扩展

大量MATLAB工具箱函数都是以M文件的形式提供的,因此,其具体实现都是公开的,而且用户可根据自己的需要加以修改。这些公开的代码不仅为用户对其进一步改进提供了很好的基础,而且研究者还能够通过阅读这些代码,更好地理解相关的算法。

以M文件为基本模块的工具箱组织方式,也使得用户能够构建自己的工具箱,或进一步搭建起基于MATLAB的二次应用环境。

MATLAB的开放性还体现在它与其他编程语言和工具软件的交互上。MATLAB提供了C语言和FORTRAN语言的API函数库,开发者可以利用这些API函数,使用C语言或FORTRAN语言来实现有关算法,然后把它们编译为可在MATLAB中执行的MEX函数模块。

MATLAB还通过COM接口对外提供计算服务,其他的应用程序可以通过该COM接口调用MATLAB的计算功能,从而使得MATLAB可以作为一个强大的后台计算引擎来发挥作用。例如,用户可以利用C++、VB等语言来编写应用程序,然后在其中调用MATLAB来完成复杂或性能敏感的计算任务。

MATLAB也可以对Java类进行操作和使用。同时,由于MATLAB强大的功能和已经构建起来的应用生态,不少其他的工具软件也提供了与MATLAB兼容的接口。例如,在LabVIEW中就可以利用M语言来编写模块以执行有关的计算功能。

7. C/C++代码生成功能

MATLAB能自动将M代码转换为可靠的C/C++语言代码。通过这一功能,开发者就可以利用MATLAB高效便捷地进行算法的实现、调试与验证,之后再自动转换为C/C++代码,就能够将所实现的算法用于需要的程序中,从而极大地减少编写和调试程序的工作量。