5 个 MATLAB 的开源替代方案

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

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

编者按:本文最初发表于 2016 年 6 月,现已更新,提供了一些您可能希望考虑的其他选项。

对于数学、物理科学、工程学、经济学以及其他具有大量数值成分领域的许多学生来说,MATLAB 是他们首次接触编程或一般科学计算。

 

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 的替代方案?您更喜欢哪一个,为什么?请在下面的评论中告诉我们。

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

44 条评论

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

谢谢,已更新!

回复 ,作者 sfsdf (未验证)

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

回复 ,作者 Jason B

python 有非常流行的 numpy 库

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

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

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

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

http://maxima.sourceforge.net/

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

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

在提供与专有同行兼容的开源工具的情况下,上述风险降低了,而在那些与专有同行不兼容的开源工具的情况下,采用此类开源工具的第三世界国家/地区的教育机构则陷入困境。

IMO,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 集合。

你好

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

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

回复 ,作者是 agathi (未验证)

我正在寻找免费的 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.