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 的 Wikipedia 页面 列出了几个选项。

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

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

Jason Baker
前 Red Hatter。现在是一名顾问和有抱负的企业家。地图爱好者、创客和开源桌面和自托管软件的热情安装者。
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 集合。

你好

我是学生,我想在学习中使用开源软件

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

回复 作者 agathi (未验证)

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

ipython/sympy

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

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

我可以模拟这些软件吗?

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.