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 的基本数据数组结构,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。我已在 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

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

我可以模拟这些软件吗?

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.