在 Linux 上运行的 Matlab 的免费替代品?

软件推荐 linux 免费 开源的 数学 科学计算
2021-10-15 23:24:58

我最近加入了使用 Linux 的人们。因此,我试图用免费的——如果可能的话是开源的——替代品,尽可能多地替换适当的应用程序。

由于我需要一个像样的工具来进行我的数学实验,并且我曾经在我以前的 Windows 安装中使用 MATLAB R2013b,因此我渴望了解可以在 Linux (Ubuntu) 上运行的 Matlab 的免费(最好是开源)替代品。

是否有在 Linux 上运行的 Matlab 的免费替代品?对我来说最重要的是,在语法兼容性方面,Matlab 的替代品应该是最合适的……这样大多数程序就可以轻松移植(或者——如果可能的话——导入)。另外,我很确定没有任何替代方案具有 Matlab 提供的完整功能集,因此了解在使用您建议的替代方案时我必须期待的功能差异对我来说也很重要。含义:有什么免费的替代品可以做 MATLAB R2013b 做不到的,反之亦然?

4个回答

Linux 中的 Matlab 没有单一的替代品。Matlab 是一个非常庞大的软件包,包括相当大的库生态系统。

Octave是 Matlab 的一种免费替代品。它缺少很多功能,但所有基础知识都在那里。两者我都用过,但是根据自己的感受很难给出好的评价。此页面列出了一些细微的差异,但主要是 Octave 优于 Matlab 的情况。可能最大的问题是某些函数的行为不同,例如,布尔值的乘积加载空文件这很重要,因为它会使您自己的脚本更难移植,因为会发生意想不到的事情。

我自己的感受是

  • Matlab 比 Octave 成熟得多(不足为奇)
  • Matlab更快(我没有这方面的经验数据,这只是一种感觉)
  • Matlab UI 明显更好
  • Matlab 的库支持和网络上可用的示例代码比 Octave 的质量更高。

话虽如此,Octave 是免费的,而 Matlab 的成本远远高于普通消费者的支付能力。


Sagemath是另一种选择,但它在功能上更接近 Mathematica。

如需更多自己动手的解决方案,请查看 R、Scilab 和 Python。你不会得到集成的、多合一的包,而且学习曲线相当陡峭。

八度

正如 Olli 所说,Ocatave 是一个 matlab 替代方案:

显着特点(与 matlab 共享):

  • 语法几乎相同。它将消耗几乎所有 m 文件而无需更改。mfile 也是它的默认格式。语法是如此相同,以至于我大学的 matlab 课程在自动评分器中使用了 octave,即使该单元完全在 matlab 中教授并且只在传递时提到了 octave 一次。

  • 高质量的BLAS库集成(通常我相信它与 OpenBlas 集成,但这可能取决于您的系统,可能是 Atlas)。由于 BLAS,与 matlab 一样,使用矢量技术(而不是 for 循环)效率更高 - 所以好的 matlab 代码仍然是好的 octave 代码

  • 自动多线程以提高性能:如果您在 octave 或 matlab 中编写一些复杂的代码并打开一个工具来查看您的 CPU 负载,它将加载您的所有内核。这种平行化意味着事情应该运行得更快。
  • 带有鼠标交互的 3D 绘图:如果您创建 3D 绘图,则打开的窗口支持鼠标交互以进行缩放、平移和旋转。

还有一些附加功能,但我从未发现它们足以记住它们。

显着特征缺失:

  • :没有 simulink,其他各种库,例如Signal Processing Toolbox,也不存在。但是有一些替代方案,例如信号
  • GUI 工作区:八度工作环境是一个命令行外壳。它是功能性的并且使用类似GNU readline的东西。当您绘制在带有完整图形的新窗口中打开的图形时。(图表)。但是没有绘图编辑器,没有文件导出器,没有变量资源管理器等。只是一个外壳。

我会推荐Scilab,因为我已经使用过它,并且发现它是 MATLAB 的一个不错的开源替代品。它不具备专业软件包的稳健性和优美性,但由于它基于 MATLAB 语言,因此如果您的需求发生变化,或者您发现自己在 MATLAB 的环境中工作默认。

Stack Overflow上引用Richie Cotton的话:

Scilab 之于 MATLAB,就像 OpenOffice 之于 MS Office。也就是说,它不是一个克隆,也没有那么完美。您确实获得了 MATLAB 的大部分功能,而且价格更实惠。

看看Julia:http: //julialang.org/

Julia 专为数值科学工作而设计,包括交互式工作。 它具有像 Mathematica 和 Sage 一样的优质笔记本界面。它具有一流的性能,请查看首页上的基准。它可以调用 Python,这为它打开了许多有用的库。

Julia 专门设计用于使 MATLAB 用户轻松过渡。基本语法类似。然而,它的编程语言比 MATLAB 更现代和先进(例如它支持元编程)。

Julia 是一个相对较新的系统,因此它不像其他系统(R、Octave)那样完整,但它拥有一个不断发展的社区,并且显示出很多希望。