5 种 MATLAB 的开源替代方案

如果您正在寻找科学计算软件,但又负担不起领先的专有解决方案,请查看这些开源选项。
25 位读者喜欢这篇文章。
Math formulas in green writing

João Trindade。Jason Baker 修改。CC BY-SA 2.0。

编者注:本文最初发表于 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(一个基于 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 年代在 MIT 开发的“传奇计算机代数系统”,可以在 Linux、Mac OS X 和 Windows 上编译,并在 GPLv2 下可用。
  • SymPy,另一个 BSD 许可的 Python 符号数学库。它可以安装在任何运行 Python 的计算机上。它的目标是成为一个完整的计算机代数系统;拥有一个活跃的开发社区,定期发布版本;并在许多其他项目(包括上面的 SageMath)中使用。

您是否使用过这些工具或其他工具作为 MATLAB 的替代方案?您更喜欢哪一个,为什么?请在下面的评论中告诉我们。

Jason Baker
前红帽员工。现在是顾问和有抱负的企业家。地图爱好者、创客以及开源桌面和自托管软件的热情安装者。
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算行业工作,而且经常同时从事这两项工作。

44 条评论

GNU Octave 从版本 4 开始默认附带前端用户界面。

感谢更新。
但我没有看到提到 Octave 在版本 4 中有了自己的官方 GUI。

回复 作者 Jason B

python 有非常流行的 numpy 库

非常有趣的文章 Jason。我已将其广泛分享给 Edtech 和 OER 人员。

只是想说,我勾选了“不,我没有使用数值计算平台”,因为我认为当我上学或上大学时,它们甚至不存在。

我不知道 R 编程语言是否是开源的,但它和 matlab 一样好。

看看 Maxima,它是一个用于操作符号和数值表达式的系统,包括微分、积分、泰勒级数、拉普拉斯变换、常微分方程、线性方程组、多项式、集合、列表、向量、矩阵和张量。

http://maxima.sourceforge.net/

这篇文章在尝试提出可以替代众所周知的专有软件包的开源数学和数值工具方面做得很好。如果能提及使用这些开源工具的著名教育机构、组织甚至企业机构,将会很有帮助。所谓的第三世界国家/地区的机构如果可以从已建立的来源获得帮助,就不会遇到开源软件的问题。

担心被遗留在实验性项目(更新不频繁的项目),甚至有时是已失效的项目中,这使得第三世界国家/地区的教育机构标准化使用专有软件包,正如作者正确指出的那样,这些软件包的开发商/出版商/营销商提供大幅降低的教育许可证。

在提供与专有对应物兼容性的开源工具的情况下,上述风险会降低,而在那些与其专有同行不兼容的情况下,采用此类开源工具的第三世界国家/地区的教育机构将被冷落。

IMO,Python + SciPy stack 是唯一有竞争力的替代方案,但不幸的是,对于 windows 用户来说,没有简单的方法来安装它

对于那些想要在 Windows(或其他地方)上使用 Python+SciPy stack 的人来说,Continuum 的 Anaconda 软件包打包得很好,并且作为独立的 python 安装,这使得它在 Windows 上更容易管理。相关的 Conda 软件包管理器也很容易使用。

回复 作者 jxjl (未验证)

来自 Continuum Analytics 的 Anaconda 安装使得安装非常容易,即使在 Windows 上也是如此。

回复 作者 jxjl (未验证)

为了公平起见:您是否知道 MathWorks 产品的家庭使用许可证,大约 100 美元?当然,它仍然不是开源的;)

从我所看到的一切来看,我认为 Julia 将是 MATLAB 的一个非常好的(并且性能更好的)替代方案。它是 MIT 许可的,而不是 GPL,因此您在使用它进行商业项目时不会有任何问题(我目前正在这样做)。

您在使用上述任何应用程序时都不应遇到任何商业问题。唯一的限制是更改应用程序的源代码。

回复 作者 Scott Jones (未验证)

如果您正在寻找用免费且更好的东西来替代 Matlab,请考虑 Julia 编程语言,https://julia-lang.cn。Julia 是一种通用的开源语言,其目标明确地针对科学计算,具有 Python 的高级感觉、Matlab 的数值易用性、编译后的 C 的速度以及 Lisp 的元编程 CS 复杂性。它是功能的完美结合,为科学计算开辟了一个全新的可能性世界。

Julia 没有被提及,我感到非常惊讶。Julia 的大部分软件包都是用 Julia 本身编写的,因此与 R 不同,您不需要额外了解 C。语法与 Python 一样容易,甚至更容易,速度更快,它只是一个可以完成您所有需求的东西。但是,1.0 尚未发布,尽管它可能会在今年发布,并且许多东西尚未确定。

回复 作者 John Gibson (未验证)

截至今天 (2021 年),我毫不怀疑 Julia _是_ Matlab 的最佳替代方案,因为它具有非常相似(但不是,也不旨在相等)的语法,带来了现代设计、计算效率和比 Matlab 更多的“工具箱”(软件包)。
对我来说,唯一的例外是如果有人想要保留最大的源代码兼容性,那么也可以考虑 Octave。

回复 作者 Mee (未验证)

感谢您的评论。我同意,Julia 是一个非常值得注意的替代方案,具有许多影响许多不同用例的特性和功能。我已经将其添加到列表中。

回复 作者 Antonello Lobianco

关于 MATLAB 替代方案的有趣且内容丰富的文章。在大学时代,早期我们被介绍使用 MATLAB,但后来当我们转移到 Linux 平台时,我们更喜欢使用 Scilab。现在,我更喜欢使用 R 语言进行统计操作。

是 "Numpy",而不是 Nympy。对于天文学,完整的 SciPy 环境通过 astropy 得到增强,并在 Anaconda 下方便地安装为 "astroconda"。这似乎是目前流行的免费天文学环境,取代了 IRAF 和面向 Python 2.7 的 Ureka 集合。

抱歉,排版错误是在编辑中引入的。已修复!

回复 作者 Stefan Mochnacki (未验证)

你好

我是学生,我想为我的学习使用开源软件

有很多很棒的开源工具可供学习,agathi。学习的一个好方法是在您的学校笔记本电脑上运行 Linux,并系统地探索您发行版的软件仓库。一个很好的入门发行版是 http://ubuntu.com

回复 作者 agathi (未验证)

我正在寻找 Simulink(Matlab 的一部分)的免费替代品。

请尝试 Scilab/Xcos。Xcos 是 Simulink 的替代品。

回复 作者 Igor (未验证)

ipython/sympy

很棒的工具。解释得很清楚。其中我最喜欢的是 python 中的 numpy

我做了很多数学运算,我认为这可能很有用,而不必为每个问题编写程序。

我可以在这些软件中模拟 Simulink 吗?

Python 具有库,可以在大多数计算问题中胜过 marlin。此外,大多数流行的深度学习软件包都是基于 python 的。

我也喜欢 Octave,但就是离不开 python。

许多数值例程无法在 BSD 上运行。所以我必须仔细选择

谢谢,这篇文章对我很有帮助!

我以前经常使用 Sage,但现在不太使用了。

您的网站太酷了。我对您网站上的细节印象深刻。您教会了我很多关于开源和 Linux 的知识!

很棒且有趣的帖子。谢谢!感谢您分享如此精彩的文章,我喜欢阅读您在本文中提到的信息,这些信息对我有帮助!!

我已经安装了 Mageia Linux,并且渴望探索开源。

Mageia 是一个很棒的发行版。我非常喜欢使用它。

祝你好运!

回复 作者 viparushiroy

刚刚在 Twitter 上看到 SageMath 有一个很棒的 LaTex 包。

Julia 宣传自己对 MATLAB 用户友好,我个人认为这是真的。

我还没有用 Julia 做过任何事情,但这已在我的列表中一段时间了。

回复 作者 Ariel (未验证)

Designmodo 在他们的新文章 https://designmodo.com/google-analytics-alternatives/ 中提到了一些新工具

它可能会有所帮助,因为绝对免费的工具很少。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.