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

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

另外,MATLAB值这个价吗?


当前回答

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

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

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

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

其他回答

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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