编者按:本文最初于 2016 年 6 月发布,并已更新以提供一些您可能希望考虑的额外选项。
对于数学、物理科学、工程、经济学以及其他具有大量数值成分领域的许多学生来说,MATLAB 是他们首次接触编程或一般科学计算的工具。
它可能是一个很好的学习工具,尽管(以我的经验)学生和研究人员使用 MATLAB 所做的许多事情都不是特别苛刻的计算; 相反,它们可以很容易地使用任何数量的基本脚本工具进行,无论是否具有统计或数学导向的软件包。 然而,它在许多学术环境中几乎无处不在,带来了大量熟悉该语言、插件和一般功能的用户社区。
但 MATLAB 是一种专有工具。 如果您无法访问其源代码,您对其工作方式以及如何修改它的了解有限。 对于学术环境之外的许多人来说,它也贵得令人望而却步,单个副本的许可费可能高达数千美元。
幸运的是,有很多很棒的开源替代品。 根据您的确切目标,您可能会发现其中一个或另一个更适合您的特定需求。 以下是三个值得考虑的:
Julia
Julia 是一种动态类型编程语言,具有 Lisp 风格的宏、用于并行计算的内置原语以及专为矩阵操作、数据可视化等设计的功能。 它的设计感觉更像是脚本语言,而不是 C 风格的编程语言,甚至具有交互模式 (REPL),并且可以通过其嵌入 API 嵌入到其他语言中。
Julia 的用户有很多喜欢其语法和功能的原因,但一些流行的例子包括其广播功能,它允许您将函数应用于一个或多个数组,而无需编写复杂的循环,其简单的数组函数允许您旋转和重塑数组、矩阵变换、自动微分、原生 Unicode 支持、集成单元测试、轻松并行化以及功能不损失(并提高代码效率)的全面更简单的语法。
Julia 拥有一个活跃的社区,围绕其开发和使用,因此它也针对特定领域进行了定制,包括图像处理 (JuliaImages)、生物学 (BioJulia)、量子物理学 (QuantumBFS)、非线性动力学 (JuliaDynamics)、经济学 (QuantEcon)、天文学 (JuliaAstro) 等。
Julia 采用 MIT 许可证,可以从 julialang.org 下载。
GNU Octave
GNU Octave 可能是最著名的 MATLAB 替代品。 Octave 已经活跃开发了近三十年,可以在 Linux、Windows 和 Mac 上运行,并且针对大多数主要发行版进行了打包。 如果您正在寻找尽可能接近实际 MATLAB 语言的项目,Octave 可能是您的一个不错的选择; 它力求实现精确的兼容性,因此您为 MATLAB 开发的许多项目可能无需修改即可在 Octave 中运行。
Octave 除了现在随版本 4 附带的默认前端之外,还有许多不同的前端交互选择; 有些比其他更像 MATLAB 的界面。 Octave 的 维基百科页面 列出了几个选项。
Octave 采用 GPL 许可,其源代码可以在 GNU 下载站点 上找到。
NumPy
NumPy 是用于 Python 科学计算的主要软件包(正如其名称所示)。 它可以处理 N 维数组、复杂的矩阵变换、线性代数、傅里叶变换,并且可以充当 C 和 C++ 集成的网关。 它已用于游戏和电影视觉效果开发领域,并且是 SciPy Stack 的基本数据数组结构,SciPy Stack 是一个基于 Python 的数学、科学和工程软件生态系统。 NumPy 采用 BSD 许可证,并提供适用于 Linux、Windows 和 Mac OS X 的软件包。
Scilab
Scilab 是另一种用于数值计算的开源选项,可在所有主要平台上运行:包括 Windows、Mac 和 Linux。 Scilab 可能是 Octave 之外最著名的替代方案,并且(与 Octave 一样)它的实现方式与 MATLAB 非常相似,尽管精确的兼容性不是项目开发人员的目标。
Scilab 以开源形式根据与 GPL 兼容的 CeCILL 许可证分发,其 源代码 可在项目网站上找到。
Sage
SageMath 是另一种开源数学软件系统,对于那些寻求 MATLAB 替代方案的人来说,可能是一个不错的选择。 它建立在各种著名的基于 Python 的科学计算库之上,并且它自己的语言在语法上与 Python 相似。 它具有许多功能,包括命令行界面、基于浏览器的笔记本、用于在其他文档中嵌入公式的工具,当然还有许多数学库。
SageMath 在 GPL 许可下提供,其源代码可以在 项目网站 上找到。
此列表仅触及研究人员和学生可能选择用作 MATLAB 的开源替代方案的工具的表面。 R、Julia、Python 和其他标准编程语言可能非常适合您,具体取决于您的确切需求。 您可能需要考虑的其他一些开源工具包括:
- Genius Mathematic Tool,一款积极开发的计算器程序和研究工具。 它使用 Genius Extension Language 为 Linux 和 Unix 计算机编写,并在 GPL GNU 许可下提供。
- Maxima,另一种经常更新的 MATLAB 替代方案。 它基于 Macsyma,这是一种“传奇的计算机代数系统”,于 20 世纪 60 年代在麻省理工学院开发,可以在 Linux、Mac OS X 和 Windows 上编译,并且在 GPLv2 下提供。
- SymPy,另一个 BSD 许可的 Python 库,用于符号数学。 它可以安装在任何运行 Python 的计算机上。 它的目标是成为一个完整的计算机代数系统; 拥有一个活跃的开发社区,定期发布; 并且在许多其他项目中使用(包括上面的 SageMath)。
您是否使用过这些或其他工具作为 MATLAB 的替代品? 您更喜欢哪一个? 为什么? 请在下面的评论中告诉我们。
44 条评论