首页 文章

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

提问于
浏览
74

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

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

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

11 回答

  • 23

    在2008年,我尝试做同样的事情 . 我很快注意到以下显示塞子:

    • 工具箱不完整,没有经过充分测试 . 特别是我的作品所依赖的图像处理工具箱(大型节目制作者是没有实现imtransform) .

    • 与Matlab相比,Octave调试器和分析器是原始的 .

    • 如果您与他人合作,可能很难让他们改变 .

    • 如果您使用第三方工具箱,您可以自己使用它们 .

    • Octave的情节不是出版质量 .

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

  • 50

    就在我的头顶:

    • 有八个Octave没有的工具箱,正如我在两个学期前尝试在机器学习课程中做作业时发现的那样 .

    • Octave有一个低劣的调试器 . 这几乎是不可能的 .

    • Matlab对于许多类型的操作来说要快得多 .

    • Matlab的情节好多了 .

    • Octave不是't have a native GUI. There are GUIs for Octave, but they are inferior to Matlab'的本地人 .

  • 2

    我也测试过octave和R.

    Regarding octave: 我对八度语法的相似性印象深刻 . 它还没有使用MATLAB . 由于MATLAB是在gnuplot下构建的,另一种纠正其错误的方法是编辑生成的gnuplot文件 . 我找到的最好的IDE是QtOctave,我在"Remember Blog"进行了简短的评论 .

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

  • 5

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

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

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

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

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

  • 7

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

  • 8

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

    • 它的语法允许你编写稍微接近C的代码 . 即=, - =,默认函数参数值,双引号字符串文字等...

    • 假设您的芯片比台式机处理器慢,速度可能不会成为问题 .

    • 由于它的启动速度远远快于matlab,因此集成到shell脚本进行测试更为实用 .

    • 对于原型设计,绘图绰绰有余;人们习惯于MATLAB的风格 .

    • 亲戚缺乏工具箱并不是什么大问题,因为无论如何它们都无法在你的目标平台上使用 .

    我使用它们,每当我切换时,我都会错过另一个的功能 .

  • 0

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

    如果你能跨过囚犯的困境,那么你也可以更喜欢八度超过matlab .

  • 3

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

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

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

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

  • 5

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

    还有一些limitations/differences at Octave FAQ .

  • 14

    如果你负担得起,你绝对应该更喜欢Matlab和Octave .

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

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

  • 10

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

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

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

相关问题