我最近加入了使用Linux的人们。结果,我正在尝试使用免费的(如果可能的话,开源的)替代方案来替换尽可能多的专有应用程序。

因为我的数学实验需要一个不错的工具过去我曾在以前的Windows安装上使用过MATLAB R2013b,所以我渴望了解免费的(最好是开源的)Matlab的替代品,该替代品将在Linux(Ubuntu)上运行。

Linux上运行的Matlab的免费替代品?对我来说最重要的是,在语法兼容性方面,Matlab的替代方案应该是紧密匹配的……以便可以轻松移植(或(如果可能的话)导入)大多数程序。另外,我非常确定没有替代方案会具有Matlab提供的完整功能集,因此,对我来说,了解在使用您建议的替代方案时必须期望的功能差异也很重要。含义:有没有其他免费替代方法可以执行MATLAB R2013b,反之亦然?

评论

Matlab有很多功能。您使用哪些功能?您是否尝试过Scilab,它努力成为Matlab的免费替代品?

@ e-sushi没有开源应用程序可以代替专有应用程序。您应该包括所需的规格列表。

@Bernhard:“尽可能多”似乎是一个非常明确的要求。是否真的有这么多涵盖Linux大部分功能的Matlab替代品,很难选择一两种兼容最紧密的产品?你能说出十个这样的程序吗?

@Bernhard:如果您到目前为止还没有注意到,那么这个问题已经有一个批准的答案。满足者的要求。根据给定的准则考虑某人能够给出令人满意的答案是事实证明,该问题足够明确,不需要进一步说明。如果e-sushi回答您的问题,您相信您能提供比Olli更好的解决方案吗?整个软件包的一般兼容性与其他软件包一样,都是对软件包合乎需要的有效度量标准,无论您如何考虑。

@Bernhard:这是您的意见。在我看来,这个问题非常好,并且“最相似于给定”是一个非常明确且非常可接受的准则。我真的不明白你的仇恨。 (而且他是否使用所有功能都是没有根据的。例如,我是一名作家。我倾向于问一些我从未使用过或打算使用的东西的问题-我故事中的人物是这样做的。如果我要避免商标问题我的书仍然让我的角色使用类似于Matlab的真正的非抽象软件,并且在Linux上运行,我会问同样的问题。)

#1 楼

在Linux中,没有任何替代品可以替代Matlab。 Matlab确实是一个巨大的软件包,包括相当大的库生态系统。

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

我自己的感觉是


Matlab比Octave成熟得多(应该不足为奇)
Matlab更快(我不知道
没有经验数据,只是一种感觉)
Matlab UI明显更好。
与Matlab相比,图书馆支持和Web上可用的示例代码质量都比Octave高。

话虽这么说,Octave是免费的,而且Matlab的价格远远超出了普通消费者可以负担的价格。


Sagemath是另一种选择,但在功能上更接近Mathematica。 />
有关更多自己动手的解决方案,请查看R,Scilab和Python。您将不会获得与这些组件集成的一体化软件包,并且学习曲线相当陡峭。

评论


-1:我相信SR的指导方针是“每个答案一个产品”。否则,投票不会反映出对单个产品的信念,这是这里的重点。我将对纯Octave答案进行+1投票,但对SageMath则没有任何意见。

–伊拉克·巴克斯特
2014年2月5日在6:53



@IraBaxter您能指出我该准则吗?

–奥利
2014年2月5日在7:55



@IraBaxter正在讨论,但尚未达成共识。

– Tim Post
2014年2月5日在11:07

@TimPost感谢您的单挑。

– e-sushi
2014年2月5日,11:13

#2 楼

Octave

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

值得注意的功能(与matlab共享):


语法几乎相同。它将消耗几乎所有m文件,而无需进行更改。 mfile也是其默认格式。语法是如此相同,以至于我所在大学的matlab课程在自动分级机中使用八度音阶,即使该单元是完全在matlab中讲授的,并且只通过了一次八度音阶。
高质量的BLAS库集成(通常我相信它将与OpenBlas,但这取决于您的系统,可能是Atlas)。由于使用了BLAS,因此与matlab一样,使用矢量技术(而不是for循环)效率要高得多-因此,好的matlab代码仍然是好的倍频程代码。

自动多线程性能:如果编写一些使用octave或matlab中的复杂代码,并打开一个工具来查看您的CPU负载,它将加载您的所有内核。

与鼠标交互的3D图:如果创建3D图,则打开的窗口支持鼠标交互以缩放,平移和旋转。

还添加了一些功能,但我从来没有发现它们足以引起人们的注意。

缺少的重要功能:



库:没有Simulink,并且不存在其他各种库,例如Signal Processing Toolbox。但是还有其他一些选择,例如信号包

GUI Workspace:八度工作环境是命令行外壳。它是功能性的,并且使用类似GNU readline的东西。绘制在新窗口中打开的包含完整图形的图形时。 (图中的)。但是没有Plot编辑器,没有文件浏览器,没有变量资源管理器等。只是一个外壳。


评论


更正:我最近从源代码安装了Octave 4.2.1构建。如果您具有适当的依赖关系,Octave会提供一个简洁的GUI。因此,八度不仅是一个shell程序。

– XavierStuvw
17年3月12日在8:18

#3 楼

我会推荐Scilab,因为我已经使用它,并且发现它是MATLAB的一个不错的开源替代品。它没有专业软件包的健壮性和完善性,但是由于它基于MATLAB语言,因此,如果您的需求发生变化,或者以后您发现自己在MATLAB是默认值。

在堆栈溢出时引用Richie Cotton:


Scilab适用于MATLAB,而OpenOffice适用于MS Office。就是说,这不是一个完全克隆的东西,而且还不够完善。您确实获得了MATLAB的大部分功能,价格也更加合理。


评论


[+1]您可以添加任何有关Matlab语法兼容性的信息(以了解将现有内容移植到Scilab是否容易)?

– e-sushi
2014年2月5日在11:14



Scilab具有内置的m文件翻译器,可轻松将代码移植到MATLAB。另外,它是跨平台的,即可以与Windows / Linux / MacOS一起使用。好吧,由于我只使用了SCILAB,所以我无法说出它相对于其他产品的优缺点,但是,是的,我发现它相当不错。

–牧场主
14年2月5日,11:19

还要注意,Scilab已经存在了一段时间,它是由法国政府赞助的。

– Radio Cernej
16 Dec 16'1:26

#4 楼

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

Julia专为数值科学工作而设计,包括交互式工作。它具有高质量的笔记本界面,如Mathematica和Sage。它具有同类最佳的性能,请查看首页上的基准测试。它可以调用Python,从而为它打开了许多有用的库。

Julia专门设计用于简化MATLAB用户的转换。基本语法相似。但是,它的编程语言比MATLAB的语言更现代和更高级(例如,它支持元编程)。

Julia是一个相对较新的系统,因此它不如其他系统(R,Octave)完整,但它社区在不断发展,并显示出很大的希望。

评论


(正如您所说)Julia的一个显着特点(与numpy相比)特别出色,它是数字运算的语法与Matlabs几乎相同。在某种程度上,移植数字算法时,复制并粘贴然后修复异常是可行的。

–林登·怀特(Lyndon White)
15年8月20日在9:38



#5 楼

如果您不需要与Matlab完全兼容,则可以选择Freemat。



http://freemat.sourceforge.net/

它可以很快,因为它使用LLVM作为JIT编译器。

http://freemat-blog.blogspot.com/2008/02/why-jit-how-to-jit。 html

Freemat具有比Octave更长的集成GUI,尽管Octave的GUI越来越好。

主要缺点是它不像Octave那样积极地开发。 ;最新版本是2013年。

https://www.openhub.net/p/_compare?project_0=FreeMat&project_1=GNU+Octave

评论


我于2010年在一家初创公司使用Freemat,它满足了我们的需求。

– Radio Cernej
16 Dec 16'1:25