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

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

另外,MATLAB值这个价吗?


当前回答

对于罗迪·奥登豪斯的回答,我没有太多想补充的。我通常遵循的策略是,我写的所有函数都应该在Matlab中运行。

我在两个系统上测试了一些特定的功能,用于以下用例:

a) Octave不需要许可证服务器-例如,如果您的机构不支持本地许可证。我曾经使用过它,当时我使用脚本的系统没有连接到互联网,并且将运行很长一段时间(在实验室的一个角落),并由许多不同的用户使用。备注:这不是关于许可证费用,而是关于相关的技术问题。

b) Octave支持其他平台,例如树莓派(http://wiki.octave.org/Rasperry_Pi) -这可能会派上用场。

其他回答

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

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

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

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

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

问题是:

你的钱比时间多吗?

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如此受欢迎和特别的是它在不同学科中出色的工具箱。由于您的主要目标是学习MATLAB,所以使用Octave或MATLAB并没有什么不同!

只是去买MATLAB而没有任何酷的工具箱(这基本上取决于你的专业)真的不是一笔合理的支出!

你绝对可以用Octave有一个好的开始,并在互联网上跟随大量的MATLAB教程。

我不会向你提供一份完整的分歧清单,而是告诉你我对这件事的看法。

如果你仔细阅读你提供的维基页面,你会经常看到这样的句子“Octave支持两者,而MATLAB需要第一种”等。这表明Octave的开发人员试图使Octave语法“优于”MATLAB的语法。

This attitude makes Octave lose its purpose completely. The idea behind Octave is (or has become, I should say, see comments below) to have an open source alternative to run m-code. If it tries to be "better", it thus tries to be different, which is not in line with the reasons most people use it for. In my experience, running stuff developed in MATLAB doesn't ever work in one go, except for the really simple, really short stuff -- For any sizable function, I always have to translate a lot of stuff before it works in Octave, if not re-write it from scratch. How this is better, I really don't see...

另外,如果你学习Octave,有很多在Octave中允许的语法在MATLAB中是不允许的。意思是,用Octave编写的代码如果没有大量的转换,通常无法在MATLAB中工作。反过来也不兼容!

I could go on: The MathWorks has many toolboxes for MATLAB, there's Simulink and its related products for which there really is no equivalent in Octave (yes, you'd have to pay for all that. But often your employer/school does that anyway, and well, it at least exists), proven compliance with several industry standards, testing tools, validation tools, requirement management systems, report generation, a much larger community & user base, etc., etc., etc. MATLAB is only a small part of something much larger. Octave is...just Octave.

所以,我的建议是:

看看你的学校是否会为MATLAB付费。他们经常会这样做。 如果他们没有,如果你能凑足钱,买MATLAB并学会正确使用它。从长远来看,这是一个更好的决定。 如果你真的拿不到钱——使用Octave,但要学习MATLAB的语法,远离Octave专用语法。(见注)

为什么是最后一点?因为在科学领域,经常有大量完全用MATLAB编写的代码库。有教授、工程师、学生、专业编码员,很多很多的人都知道MATLAB的所有复杂的血腥细节,而不太了解Octave。

如果你得到了一份新工作,而你的新办公室里的每个人都说西班牙语,那么仅仅因为你不会/不喜欢西班牙语,就要求每个人都开始说英语就有点自大了。MATLAB和Octave也一样。

注意:Octave可以在“传统模式”下运行(通过在启动Octave时包含——traditional标志),这使得它在使用某些仅限Octave的语法时给出错误。