为什么/什么时候我更喜欢MATLAB而不是Octave?

时间:2010-08-20 20:59:01

标签: matlab octave

在我们的鞋带操作中,我们需要在一些更高级语言中对算法进行原型设计,然后才能在嵌入式硬件上实现C实现。

到目前为止,我们一直在使用MATLAB来做到这一点,但许可成本开始受到影响。我们正在考虑将我们的MATLAB代码移植到Octave。

是否有任何特殊原因这样做?我们是否会破坏任何兼容性,特别是如果我们有外部合作伙伴坚持使用MATLAB?我们可以期待任何表现惩罚吗?

11 个答案:

答案 0 :(得分:50)

2008年,我尝试做同样的事情。我很快注意到以下显示停止者:

  • 工具箱不完整且未经过充分测试。特别是我的作品所依赖的图像处理工具箱(大型展示限制器是未实现的转换)。
  • 与Matlab相比,Octave调试器和分析器是原始的。
  • 如果您与他人合作,可能很难让他们改变。
  • 如果您使用第三方工具箱,则可以自行使用它们。
  • Octave的情节不是出版质量。

但我不得不说,我对Octave与Matlab的兼容性印象深刻,如果你使用Matlab是基本的,你可能会很幸运。最后这是在2008年,在两年内事情可以改变很多。

答案 1 :(得分:23)

刚刚出头:

  1. Octave没有很多工具箱,正如我在两个学期前在机器学习课程中尝试做作业时发现的那样。
  2. Octave有一个低劣的调试器。这几乎是不可能的。
  3. Matlab对于许多类型的操作来说要快得多。
  4. Matlab的情节好多了。
  5. Octave没有原生GUI。 Octave有GUI,但它们不如Matlab的原生GUI。

答案 2 :(得分:14)

我也测试了八度音和R音。

关于八度:我对八度语法的相似性印象深刻。我花了很多时间将MATLAB脚本传输到八度音程。 Meanwihile我在打印标记方面遇到了一个特殊的问题,因为jarno Rajahalme在nabble修正了errorbar,并改变了xtick字体大小,这是我在nabble的问题回复中得到的解决方法。所以它仍然有一些错误,可以通过一些努力来克服。如果您遇到一些问题,可以试试nabble邮件论坛:help-octave@octave.org。顺便说一句,我的团队无法适应(用户友好),比如他们适应MATLAB,所以我们仍然使用MATLAB。由于MATLAB是在gnuplot下构建的,另一种纠正其错误的方法是编辑生成的gnuplot文件。我找到的最好的IDE是QtOctave,我在“记住博客”中做了一个简短的评论。

关于R:根据SciViews的研究,R的性能优于MATLAB和octave。我对R没有太多的经验。我研究过mclust软件包,写了一篇关于R中EM聚类的wikibook章节。顺便说一句,他们似乎有一个非常活跃的社区。因此,您可能会发现提案的第三方包,这些提案不是IMO标准化的。我找到的最好的IDE是用于eclipse的StatET插件,JGR(用于R的Java GUI)和emacs。尽管学习新编程语言需要花费时间,但如果我选择一个开源平台来制作我的实验图形和一些数据挖掘分析,我会尝试使用R。

答案 3 :(得分:10)

Octave在matlab上有一些语法改进,例如你可以说endif endforendfunction而不是end,这使得调试变得更加容易。

Octave还允许您动态生成函数,并在脚本和函数文件中定义了多个函数。这比matlab的单文件一功能方法更好。

最后,八度音程具有parcellfunpararrayfun,它们是matlab完全缺乏的非常强大的并行处理工具。在matlab中有一个parfor,但在我看来,它并不是最好的方法。

八度音阶的缺点是他们略微落后于工具箱,但如果你看起来你可以找到相似的东西。由于某种原因,fsolvelsode似乎有点慢,但更加稳健,在八度音阶中。对于某些人来说,一个很大的缺点往往是缺少符号链接和DAQ工具箱,但这些东西无论如何都将是专有的。

Python / Numpy绝对值得一试:它的功能更强大,但它们的语法针对更复杂的代码片段。

答案 4 :(得分:9)

Octave没有guide,这使得构建GUI非常容易。我经常使用指南为同事的非MATLAB制作工具。

答案 5 :(得分:7)

对于您的用例,八度音程可能优于MATLAB:

  • 它具有允许您使用的语法 编写稍微接近的代码 C. ie + =, - =,默认功能 参数值,双引号字符串 文字等......

  • 假设你的筹码比a慢 台式机处理器,速度很快 不是问题。

  • 因为它发射速度远远超过 matlab,它更实用 集成到shell脚本中进行测试。

  • 对于原型制作,绘图绰绰有余;人们习惯于MATLAB的风格。

  • 工具箱的相对缺乏不是 因为他们不会是一个大问题 可在您的目标平台上使用 反正。

我使用两者,每当我切换时,我都会错过另一个的功能。

答案 6 :(得分:5)

有趣的是,开源替代方案如何用于统计,而不用于数值分析。 R(统计的八度)现在比商业S-plus(统计学的matlab)更受欢迎。在其他答案中提到的作为不切换matlab的原因所提出的问题也适用于R.但是仍然每个人都开始贡献,现在R是标准,具有更好的图形,更好的包和没有更多的供应商锁定。

所以如果你可以跨过囚犯的困境,你也可以选择八度超过matlab。

答案 7 :(得分:5)

在MATLAB上有一个很好的WikiBook,list of differences between MATLAB and Octave

根据我的经验,核心MATLAB很好地移植到Octave,但工具箱具有不同级别的兼容性,因此您的决定取决于您尝试编码的确切内容。

Octave缺少的一些东西,AFAIK,是与.NET代码和gui构建器guide的紧密集成(尽管Octave可以使用许多其他GUI构建工具)。

此外,正如其他人所指出的那样,您使用MATLAB支付的大部分内容都是光滑的界面和调试/分析工具。有经验的程序员可能会选择替代方案,但是新手可能很难。

答案 8 :(得分:3)

请注意,Octave支持Matlab中不存在的语言结构(例如,自动增量运算符,do-until语句等)。这使得将Octave上开发的代码(由不熟悉Matlab限制的人)的端口代码移植到Matlab环境有时很烦人。

还有其他limitations/differences at Octave FAQ

答案 9 :(得分:2)

如果你负担得起,你肯定更喜欢Matlab和Octave。

我对Octave没有多少经验,但如果您的代码使用的是Matlab工具箱,花哨的图或Matlab gui,我会发现问题。

我希望它就像OpenOffice与MS Office一样。大多数兼容,但只是不同,足以让你头疼。

答案 10 :(得分:0)

我已成功将一些线性回归和二次编程应用程序移植到Octave。

线性回归(反斜杠运算符)无需任何调整即可工作。在二次编程的情况下,我不得不从 fmincon()切换到 sqp(),给出类似的结果。

尽管如此,Octave中的工具箱和GUI确实不那么成熟(我花了很多时间在基本的东西上),尽管它在过去两年里一直在快速取得进展。