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

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

另外,MATLAB值这个价吗?


当前回答

我刚开始使用Octave。我见过有人用MATLAB。上面提到的一个主要区别是Octave有一个命令行界面,而MATLAB有一个GUI。根据我的经验,拥有一个GUI非常适合调试。

在Octave中,你必须执行命令来查看矩阵的长度,等等,但在MATLAB中,它使用良好的界面很好地显示了一切。但Octave是免费的,适合我做的基本任务。如果你确定你要做的只是基本的事情,或者你不确定你现在需要什么,那么就选择Octave。当你真的觉得需要的时候,你可以花钱买MATLAB。

其他回答

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

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

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

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

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

我刚开始使用Octave。我见过有人用MATLAB。上面提到的一个主要区别是Octave有一个命令行界面,而MATLAB有一个GUI。根据我的经验,拥有一个GUI非常适合调试。

在Octave中,你必须执行命令来查看矩阵的长度,等等,但在MATLAB中,它使用良好的界面很好地显示了一切。但Octave是免费的,适合我做的基本任务。如果你确定你要做的只是基本的事情,或者你不确定你现在需要什么,那么就选择Octave。当你真的觉得需要的时候,你可以花钱买MATLAB。

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

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

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

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

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

如果你仔细阅读你提供的维基页面,你会经常看到这样的句子“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的语法时给出错误。