我是一个懂Python, Ruby和一些C语言的程序员,我正在决定是学习GNU Octave还是MATLAB。我知道它们有很多共同点,但我不清楚它们的语法甚至数据结构有多相似。上面的链接显示了几个语法相似或相同的例子。整个语言都是这样吗?

我正在努力学习这门语言,以便进行更多的科学计算,可能会使用一些图像分析库。

另外,MATLAB值这个价吗?


当前回答

Octave is basically an open source version of MATLAB. It was written to be just that. MATLAB has a very nice GUI which makes it a bit easier to use, but the next stable release of Octave will also have a GUI, which I have tested in the unstable release, and looks fantastic. Octave is much more buggy because it was developed and maintained by a group of volunteers, where the development of MATLAB is funded by millions of dollars by industry. I'm still a student and am using a student version of MATLAB, but I am thinking of going over to Octave once the stable version with the GUI is released.

MATLAB可能比Octave强大得多,算法运行得更快,但对于大多数应用程序来说,Octave绰绰有余,在我看来,它是一个完全免费的神奇工具,而Octave是完全免费的。

我会说使用MATLAB,而你可以使用学术版本,但切换到Octave应该是无缝的,因为他们使用完全相同的语法。

最后,还有Simulink的问题。如果你想做仿真或控制系统设计(可能还有成千上万的其他用途),Simulink是非常棒的,并且附带MATLAB。我认为没有任何一款能与之媲美。虽然Scilab显然是一个“很好的”开源替代方案,但我还没有尝试过。

其他回答

Octave和MATLAB有很多相似之处。但是Octave是一个命令行界面。您必须在命令提示符中输入每个命令,而MATLAB具有最好的GUI。我建议大家先用MATLAB学生版;学习基础课程后使用GNU Octave永久。

现在GNU Octave附带了一个GUI,但它现在是一个开发版本。GNU Octave有一些GUI前端,比如guioctave, xoctave(不是免费的),DomainMath IDE等等。

Octave is basically an open source version of MATLAB. It was written to be just that. MATLAB has a very nice GUI which makes it a bit easier to use, but the next stable release of Octave will also have a GUI, which I have tested in the unstable release, and looks fantastic. Octave is much more buggy because it was developed and maintained by a group of volunteers, where the development of MATLAB is funded by millions of dollars by industry. I'm still a student and am using a student version of MATLAB, but I am thinking of going over to Octave once the stable version with the GUI is released.

MATLAB可能比Octave强大得多,算法运行得更快,但对于大多数应用程序来说,Octave绰绰有余,在我看来,它是一个完全免费的神奇工具,而Octave是完全免费的。

我会说使用MATLAB,而你可以使用学术版本,但切换到Octave应该是无缝的,因为他们使用完全相同的语法。

最后,还有Simulink的问题。如果你想做仿真或控制系统设计(可能还有成千上万的其他用途),Simulink是非常棒的,并且附带MATLAB。我认为没有任何一款能与之媲美。虽然Scilab显然是一个“很好的”开源替代方案,但我还没有尝试过。

嵌套函数和闭包现在被许多语言支持,包括MATLAB。 JavaScript将闭包作为一流的设计原则。

遗憾的是,Octave不支持闭包(具有词法作用域的嵌套函数)。

根据Bug:嵌套函数的句柄还不受支持,人们甚至可能会觉得开发人员不想或不能把它做好。 顺便说一下,这个2013年的bug在2020年被修复了。

这将破坏大量的代码。没有解决方法。

在Octave的FAQ中有一个更完整的差异列表链接。理论上,所有在Matlab中运行的代码都应该在Octave中运行,Octave开发人员将与Matlab不兼容视为bug。所以你第一个问题的答案理论上是肯定的。当然,所有的软件都有bug,无论是Octave还是Matlab(是的,Matlab也是)都不安全。你可以报告它们,有人会试图修复它们

Octave也有额外的功能,其中大部分是额外的语法,在我看来,这使代码更可读,更有意义,特别是如果你习惯了其他编程语言。

但对于Octave来说,不仅仅是金钱成本。Octave在自由的意义上也是自由的,它是自由的,但我不认为这是一个抱怨软件自由的地方。

我只在Octave中进行图像处理,发现图像包适合我的需要。然而,我不知道你会怎样。所以我的回答是“是否值得”,但其他人肯定不会同意。

MATLAB首先是一个商业产品。因此,MATLAB中的一切都可以开箱即用。所有的核心功能都是可靠的,如果你在做一个特殊的项目,那么MATLAB可能有一个附加组件可以卖给你,它为你添加了很多额外的领域特定的。m文件。它并不便宜,但它有效,它将毫无怨言地完成工作。

Octave总是显示其开源、信息想要自由的根源。它是免费的,它会提醒你在任何机会都是免费的。它是由那些极度讨厌Windows的志愿者开发的。因此,Octave只能勉强在Windows上运行。令人惊讶的是,有这么多MATLAB特性存在。

但问题就在这里。每当您尝试做一些比琐碎复杂的事情时,Octave突然以微妙和难以理解的方式中断。哎呀——终端驱动程序在OpenGL层深处有一个溢出。你不能打印。哎呀,这些图表用字体做了一些奇怪的事情。祝你能找到原因。Octave和其他一些鲜为人知的免费软件之间存在一些隐藏的依赖关系,所以它无法编译。希望你能查出是哪一个。

八度响应是,嘿!这是免费软件!您拥有所有的源代码,并且您可以自己修复所有这些错误!也许如果我有无限的时间和资源,我可以把所有的时间都花在修复自由软件中的漏洞上,但我个人不这么做。如果我在学术界工作,我可能会。

因此,选择MATLAB还是Octave的核心问题归结为一个问题。有趣的是,在商业软件变体和自由软件变体之间进行选择时,这个问题总是一样的。

问题是:

你的钱比时间多吗?