Octave和MATLAB的区别?

我是一位了解Python,Ruby和一些C的程序员,他们正在试图决定是学习GNU Octave还是Matlab。 我知道他们有很多共同之处,但我不清楚语法有多相似,甚至数据结构如何。 每个人都说他们“相似”,但没有人说他们实际上有多相似。 上面的链接显示了几个例子,它们在语法上相似或相同,这对于整个语言来说是否如此?

我试图学习一般的语言来做更多的科学计算,可能使用一些图像分析库。 我知道还有很多其他语言可以编程,但我的顾问们说,了解MATLAB或Octave在科学中至关重要。

另外,Matlab是否值得这个成本? 我没有很多钱,但是如果在图书馆或其他地方有重要的区别,我肯定我可以找到钱。


我不会向你提供完整的差异列表,我会给你我对这个问题的看法。

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

这种态度使Octave完全失去了它的目的。 Octave背后的想法是(或者已经变成了,我应该说,见下面的评论)拥有一个运行m代码的开源替代品。 如果它试图变得“更好”,它就会试图与众不同,这与大多数人使用它的原因不符。 根据我的经验,运行在MATLAB中开发的东西一次不会工作,除非是非常简单,非常短的东西 - 对于任何相当大的函数,在使用Octave之前,我总是需要翻译很多东西,if不要从头重新编写它。 如何更好,我真的没有看到...

另外,如果你学习Octave,那么在Octave中允许很多语法,这在MATLAB中是不允许的。 含义 - 用Octave编写的代码通常在MATLAB中无法工作,没有多次转换。 它也不兼容!

我可以继续:MathWorks拥有许多用于MATLAB的工具箱,Simulink及其相关产品在Octave中确实没有任何等价物(是的,您必须为此付费,但是您的雇主/学校通常会这样做,以及它至少存在),经过验证符合多个行业标准,测试工具,验证工具,需求管理系统,报告生成,更大的社区和用户群等等等等.MATLAB只是一小部分更大的东西。 八度是...只是八度。

所以,我的建议是:

  • 了解您的学校是否会为MATLAB支付费用。 他们通常会。
  • 如果他们不这样做,并且如果你能凑钱,购买MATLAB并学会正确使用它。 从长远来看,这是更好的决定。
  • 如果你真的无法获得资金 - 请使用Octave,但要学习MATLAB的语法,并远离Octave-only语法。
  • 为什么最后一点呢? 因为在科学中,通常有大量的代码库完全用MATLAB编写。 有许多教授,工程师,学生,专业编码人员,很多人都知道MATLAB的所有错综复杂的细节,而不是Octave。

    如果你找到一份新工作,新办公室的每个人都会说西班牙语,但要求每个人都说他们从此开始说英语,这很自然,因为你不会说西班牙语。 与MATLAB和Octave一样。

    注意 - 如果所有downvoters可以留下评论与他们的观点和理由不同意我,这将是伟大的:)


    八度的常见问题解答中提供了一个更完整的链接。 从理论上讲,Matlab中运行的所有代码都应该在Octave中运行,并且Octave开发人员将与Matlab的不兼容性视为bug。 所以在理论上你的第一个问题的答案是肯定的。 当然,所有的软件都有bug,Octave或者Matlab(是的,Matlab也是如此)对它们是安全的。 你可以报告他们,有人会尝试修复它们

    Octave还具有额外的功能,其中大部分都是额外的语法,在我看来,它使代码更具可读性和更有意义,特别是如果您习惯于其他编程语言。

    但是Octave不仅仅是货币成本。 Octave在自由意义上也是免费的,它是自由的,但我不认为这是慷慨提供软件自由的地方。

    我只用Octave进行图像处理,发现图像包适合我的需求。 然而,我不知道你的是什么。 所以我的回答是,如果它的价值是不值得的,但肯定其他人会不同意。


    MATLAB首先是一个商业产品。 因此,MATLAB中的所有内容几乎都可以用于开箱即用。 所有的核心功能都是可靠的,如果你正在开发一个特殊的项目,那么MATLAB可能会有一个附加组件,它们可以向你推销,为你增加许多额外的特定于域的.m文件。 这并不便宜,但它可以工作,而且可以毫无怨言地完成工作。

    Octave总是显示其开放源代码,信息想要自由的根源。 它是免费的,它会提醒你,每个机会都是免费的。 它是由热衷于讨厌Windows的志愿者开发的。 所以Octave勉强地在Windows上运行。 很令人惊讶的是,尽可能多的MATLAB功能存在。

    但这是蹭。 任何时候,当你尝试做一些比平凡复杂的事情时,Octave突然以微妙而难以理解的方式突破。 糟糕 - 终端驱动程序在OpenGL层深处有一处溢出。 你不能打印。 糟糕 - 图中的字体对他们的字体做了奇怪的事情。 祝你好运,找出原因。 糟糕 - Octave和其他一些不起眼的免费软件之间有一些隐藏的依赖关系,所以它不会编译。 祝你好运,找出它是什么。

    八度响应是嗨! 这是免费软件! 你有所有的源代码,你可以自己修复所有的错误! 也许如果我手上有无限的时间和资源,我可以花费我所有的时间来修复免费软件中的错误,但我个人不这样做。 如果我在学术界工作,我可能会。

    所以在核心上,选择MATLAB还是八度的问题归结为一个问题。 有趣的是,在商业和自由软件变体之间进行选择时,这个问题总是相同的。

    问题是:

    你有更多的钱比时间吗?

    链接地址: http://www.djcxy.com/p/79639.html

    上一篇: Differences between Octave and MATLAB?

    下一篇: time Image Processing: Noise in HSV image (openCV)