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 年代在麻省理工学院开发的“传奇计算机代数系统”,可以在 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 堆栈是唯一有竞争力的替代品,不幸的是,对于 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/ 中提到了一些新工具

这可能很有帮助,因为几乎没有完全免费的工具。

© . All rights reserved.