1.3.1 MATLAB的优势

1.3.1 MATLAB的优势

(1)一个实例

事实上,Mathworks关于MATLAB描述的第一句话——“MATLAB is a high-performance language for technical computing”,就已经指出了MATLAB的优势。“technical computing”大概是指科研人员或工程技术人员在研究中要进行的那种数据处理。与“technical computing”相区别的是“scientific computing”。天气预报中的计算(输入云图或其他观测数据,是用已有的算法经过超大计算量的计算得到的结果)或者用数值方法模拟核爆炸(模拟巨大数量的原子的行为)的计算属于“scientific computing”。这类计算强调的是计算速度,对算法的性能及硬件的处理速度比较关注。算法是事先就确定好的,也就是说,模型(方程)是一定的。而科学研究中的数据处理,即“technical computing”,与此不同。在这类计算中,模型是不确定的,而确定合理的数据处理方法并从中得到规律,即寻找模型(方程),正是科研工作者的主要任务。下面举一个简单例子来说明。

例6:对一组实验数据进行插值,寻找合适的插值方法。

解释:程序首先生成一个数据点阵(如图1-7中的圆圈所示),然后用4种不同的插值方法(近邻插值法、线性插值法、三次多项式插值法及样条插值法)进行数据点的加密。用曲线绘制插值结果,以观察效果。

图1-7 用不同的插值方法处理数据

(a)近邻插值法;(b)线性插值法;(c)三次多项式插值法;(d)样条插值法

例6中数据处理的目的是寻求一种最合适的数据插值方法,因此,要测试不同的插值算法。在这个任务中,最主要的工作是用程序实现不同的插值算法,如近邻插值、线性插值、三次多项式插值及样条插值等。研究者主要的任务是用代码实现上述几种算法,如果没有现成的函数可利用,这些算法的实现,包括测试,是相当费时的。

从上面的分析可知,两种计算针对的问题不同,面临的主要任务也不同。“ Technical computing”更像是“scientific computing”的“前传”。Scientific computing可以用Fortran或者C语言等完成,但要用Fortran或者C语言完成如上所述的Technical computing就很难了。因为用户不得不自己编程去实现众多的计算和绘图算法,以测试和验证自己的想法。而MATLAB如上所说,集编程、计算及可视化于一体,是完成上面所述的Technical computing理想选择。

事实上,MATLAB常被一些人诟病的一个主要原因就是它计算速度慢,计算时间长。但如果将程序开发的时间考虑在内,MATLAB的“计算速度”是很快的。事实上,对于科研工作者来说,做一个计算,时间主要消耗在算法的开发上,而不是程序的运行上。MATLAB可以大大节省算法开发的时间,从而大大提高科研工作者的工作效率。

(2)MATLAB的优势

MATLAB的优势更细致地体现在以下3个方面。

1)矩阵操作

如前所述,MATLAB数据结构的基础是矩阵,因此,MATLAB的运算基本上都可以直接针对矩阵进行。这样,在编写MATLAB程序时,可以直接写成例7所示的形式。

例7:用MATLAB进行矩阵运算。

给矩阵每个元素加1,在MATLAB中可以直接写成例7中的形式,而不用像C程序那样写成:

这就是前面所说的“familiar mathematical notation”。这种书写格式与平时读者在推导公式时的写法非常类似,很容易被用户接受,同时,在很大程度上也方便了程序的编写。

2)计算与绘图

如前所述,MATLAB是集编程、计算及数据可视化三者于一体的软件系统。前面也分析了科研工作者所面临的主要问题,基于分析,可以认为“language” “computing”“visualization” 3个功能的集成直接导致了MATLAB在Technical computing方面的“high performance”。可以说,MATLAB是最适合科研工作者的计算工具。

3)专业的工具箱——如虎添翼如前所述,MATLAB包括很多工具箱。每个工具箱集合若干函数,专门针对一个具体的问题。从这个角度讲,MATLAB工具箱就是专门针对一个问题的函数库。这些函数库是专门人员经过精心设计的,其性能和质量都有保障。

MATLAB目前有数十个工具箱,每次大的改版,都会增加一些工具箱。此外,网上还有很多个人编写的工具箱,用户可以根据需要给自己的MATLAB系统加一个工具箱。这些工具箱是MATLAB的“财富”。有了这些工具箱,很多复杂问题都可能直接调用函数解决。因此,工具箱也是MATLAB之所以具有high performance的重要因素之一。