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

1.2.2 缺点

尽管MATLAB具有上述优点,但是其缺点也是较为明显的。

1. 价格昂贵

作为一款功能强大的数学计算软件,MATLAB的价格十分昂贵。实际上,除了MATLAB核心软件,MATLAB的多数工具箱都是单独计价的。如果要将这些工具箱全部配齐,整个软件的价格将达到十余万甚至数十万元人民币。这一昂贵的价格在相当程度上限制了MATLAB的使用。在各种开源软件不断涌现的今天,MATLAB昂贵的价格已经催生出了若干功能类似的其他软件。有些开源工具在部分功能和计算效率上都已经达到了与MATLAB比高低的程度,也因此逐步扩大了它们在数学计算方面的流行度。

2. 体积庞大,对计算机性能要求高

随着MATLAB功能的不断增加,工具箱数量的不断增多,其完整安装所需的空间也越来越大。以MATLAB R2012a为例,其完整安装约需要5.7GB的硬盘空间。同时,MATLAB对于计算机的CPU和内存的要求也随着版本的提高而提高。因此,如果仅仅希望以MATLAB作为应用程序的后台计算引擎,上述的硬件开销一般都是偏大的。

3. 在某些特定应用领域中的表现不及其他软件

MATLAB的优势主要体现在以矩阵计算为核心的科学计算与仿真上,但是在一些相对更新的应用领域,由于其基础架构的问题,因此表现不见得是最佳的。例如,在大数据处理和深度学习方面,MATLAB尽管在最新的版本中也提供了工具箱支持,但是其功能和性能相比于Python语言及相关的第三方工具包或应用框架等还有一些差距。在这些领域的研究者中,其使用者所占的比例也较小。

4. 语言本身的计算效率存在不足

一般而言,MATLAB内置的计算函数的效率都足够高效,但是对于利用MATLAB进行开发的程序员来说,如果需要提高所编写的程序的效率,就需要掌握更多的技巧。

在MATLAB的较早期版本中,影响程序效率的一个典型因素,就是利用循环的方式来对数组中的每个元素进行处理。由于在MATLAB中,哪怕是基本的算术运算,也会被解释为对MATLAB相应内置函数的一次调用,因此,在利用循环逐元素进行操作时,函数调用带来的计算开销将远大于这一计算本身的实际开销,从而使得程序的运行速度显著下降。因此在较早期的MATLAB版本中,如何利用矢量化技术来减少循环的数量,是提高程序效率的一个重要技巧,甚至在很多应用中,为了能够利用矢量化技术带来的高效率,往往使得代码本身变得晦涩难懂,影响了程序的可读性。尽管在较新的版本中,MathWorks公司已经极大地提升了MATLAB中循环的执行效率,但是这一问题仍然没有得到解决。

此外,还有一种提高效率的方式,即使用MEX编程,利用C/C++语言来编写对性能影响最为显著的算法核心部分,把它编译为MEX模块后再在M函数中加以调用。不过这种方式一方面需要程序员熟悉C/C++编程,而且MEX模块的调试并不是十分方便,另一方面也使得整个程序的组织结构显得较为零散,不便于阅读和迅速理解。

尽管存在上述缺点,MATLAB仍然以其高效的计算、便捷的交互、强大的可视化能力和众多工具箱的有力支持,在科学研究与技术开发中扮演着重要的角色。