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,一个“传奇计算机代数系统”,于 1960 年代在 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。我已在教育技术和 OER 人员中广泛分享。

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

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

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

http://maxima.sourceforge.net/

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

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

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

在我看来,Python + SciPy 堆栈是唯一具有竞争力的替代方案,不幸的是,对于 windows 用户来说,没有简单的方法来安装它

对于那些想在 Windows(或其他地方)上使用 Python+SciPy 堆栈的人来说,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 替代品(Simulink 是 Matlab 的一部分)。

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本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.