是否可以使用Octave学习MATLAB编程?


23

我想学习MATLAB编程,这样我就可以自己进行一些研究/分析,也可以研究/修改一些我在网上找到的MATLAB脚本。

但是,问题是我买不起MATLAB。据我所知,GNU Octave与MATLAB兼容。但是,Octave面临的挑战是文档非常稀疏。

因此,一方面,MATLAB过于昂贵(-ve),但在线上却有很多不错的文档,教程和脚本(+),而Octave是免费的(例如在啤酒中),尽管(可以理解)它缺少全面的文档,等等。 。

我正在考虑下载和安装Octave,但要使用MATLAB文档(和脚本)来帮助我开始。我知道Octave和MATLAB之间存在一些差异-我想弄清楚的是,差异是否足够大以阻止我的努力(有效)“使用Octave学习MATLAB”。

欢迎任何建设性的反馈。


3
欢迎,Homunculus。我们还不到两个月大,还没有很多标签。我为您添加了八度标签。
David Ketcheson,2012年

如果您的目标是仅为个人使用计算软件,那么另一个选择是Mathematica。完整的完整版本供个人使用,价格不到300美元。我不知道这是否在您的预算之内。但是对于这样的功能(与完整的商业版本相同)来说,这是值得的。注意:如果您是学生,则Matlab和Mathematica也可以以大约相同的价格提供给学生。
纳赛尔2012年

1
一言以蔽之。两种语言之间的差异很小。Matlab的文档可从Mathworks.com(Matlab的制造商)免费在Internet上获得。您会错过的主要内容是Matlab的GUI。很难找到适用于Octave的GUI。Octave的开发版本具有GUI,但是很难安装。我安装了QtOctave,该软件位于outsch.org/2011/01/29/qtoctave-0-10-1-for-windows中。它工作正常,除非在启动时始终出现错误消息,而且我不能在不完全杀死Octave的情况下终止进程。我使用记事本++ ...
Stefan Smith

...而不是QtOctave的编辑器,而且效果似乎更好。另一件事是,Octave和Matlab之间的区别(在它们之间)已在免费网站上广泛记录。
Stefan Smith,

由于我没有足够的声誉来发表评论,因此我想在已接受的答案中添加一条声明:“当然,有MATLAB的功能(特别是在工具箱中,但Octave没有这些功能)”错误。Octave在Octave-forge上具有丰富的软件包集合,其中包括我所需要的Matlab的所有软件包功能(我从事图像处理和医学图像优化工作,并且需要很多工具箱/软件包)。另外,公认的答案也没有解决一个主要问题,那就是实验室或个人不能使用发问者编写的任何代码
barnhillec

Answers:


24

免责声明:当有人试图告诉我他们认为我应该怎么做而不是回答我提出的问题时,我有时会感到恼火。但是我要冒个险,并为您建议替代方案。

我建议看一下Python的科学计算软件包:numpymatplotlibscipy。它们共同为您提供了MATLAB的大多数核心功能(在某些情况下,它们为您提供的不仅仅是MATLAB)。它们是免费和开源的,如今,用户群可能比Octave还要广泛。Enthought Inc.支持Python中的许多科学计算基础结构,我建议您安装其免费的Enthought Python发行版,其中包括我提到的所有三个软件包以及更多内容。

当然,有些Python缺少MATLAB的某些功能(特别是在工具箱中,但是Octave没有这些功能)。但是我在大多数工作中都将Python与低级语言结合使用,它使我可以使用几乎与MATLAB一样方便的语言进行编程,与MATLAB所没有的许多有用软件包进行接口并运行超级计算机上的相同易读代码。

编辑:您可能还想尝试Continuum Analytics 的Anaconda Python发行版。有一个免费版本,其中包括上述所有软件包以及更多内容。


7
这取决于Homunculus是否要学习MATLAB,因为他们特别需要学习MATLAB(例如,为了一份工作),或者他们想学习MATLAB以进行科学计算,在这种情况下,考虑到财务限制,Python可能是更好的选择。
Geoff Oxberry 2012年

3
@DavidKetcheson:实际上我正在使用numpy和matplotlib(因为我熟悉Python)。但是,我经常遇到很多MATLAB代码,因此我希望能够从可用的MATLAB脚本等中学习(而不必支付许可费用)。使MATLAB编程成为我的头等功课总是一件好事-这就是为什么我想通过后门(使用Octave)学习MATLAB的原因。
Homunculus Reticulli 2012年

+1对于Python来说,它也是一种真正的编程语言:)尽管我应该说我确实是从学习MATLAB开始的。
boyfarrell 2013年

Octave是具有免费许可证的Matlab克隆。它的语言语法几乎完全兼容。Python解决了与Matlab和Octave不同的问题。它的语法更加复杂和冗长,因为该语言具有更多用途。对于线性系统原型,您可以使用Matlab或Octave,然后为了实现可用于生产环境的软件,您可以移植到python / Java。从Matlab切换到Python或R之前,您应该了解所要学习的内容。
FistOfFury

@FistOfFury我将纯Python3用于线性系统。对于准备就绪的软件,通常选择C / Fortran或嵌入式。
percusse

17

GNU Octave“基本上与Matlab兼容”,某些细微之处意味着并非所有脚本都可以从MATLAB移植到Octave。

值得阅读FAQWikibooks中有关语言和/或兼容性说明的文档。也有移植说明

存在类似于MATLAB工具箱的软件包,但是您需要将其签出以找出它们之间的相似程度。也有尝试使用转换脚本来处理两种语言之间的差异,但是据我所知,这都不是完美的。


12

是的,您可以通过Octave学习MATLAB。但是Octave语法的限制较少,更符合现代脚本语言。MATLAB在这方面似乎落后。查看此Wiki链接Octave与MATLAB之间的MATLAB编程/差异

对我来说,另一个主要区别是某些库可用于MATLAB,而不能用于Octave。


9

对于一般学习M语言编程以及MATLAB如何工作的人,是的,Octave很好。但是,如果您需要一个特定的工具箱作为工作的一部分,并且没有人实现它的免费版本,那么您就不走运了。

学生版的MATLAB并不那么昂贵。如果您在大学里,甚至有可能获得站点许可证。您应该研究这两种可能性。


7

过去,我在相同的代码段上交替使用过Octave和MATLAB。我在兼容性方面没有任何问题。据我所知,主要区别是:

  1. MATLAB可以字节编译,并且速度稍快。
  2. 八度可以使用#%进行注释,Matlab仅使用%
  3. 八音会产生很多好地块。

1
我很想听听,Octave在什么方面可以产生更好的绘图(不是我特别喜欢MATLAB绘图...)。
德克2012年

Octave使用gnuplot作为后端。可能只是我更喜欢gnuplot。我能想到的唯一具体的事情是,我不必做任何特殊的事情就能获得抗锯齿。它是自动启用的。
2012年

1
我在Octave绘图方面的经验是多种多样的,并且在使用MATLAB学习了一两件事之后,我得到的图形质量现在非常好。也许您有一些例子,Octave在此方面胜过Matab?麻生太郎,字节编译?您是在谈论MATLAB编码器吗?您不能只是在该工具中输入任意的MATLAB代码,而且如果我还记得它也是一个相当昂贵的工具,那么在学生许可版本中肯定不可用。
Reid.Atcheson

糟糕,我明白了您对编译的意思。我的错。
Reid.Atcheson

抱歉,Matlab可以字节编译是什么意思?
user17915 2013年


5

关于你的问题:
我会说是的。仅仅是因为范式和原理是相同的。语法上的差异可以忽略不计,可以将其总结在备忘单中(如果您有一天主要使用MATLAB的话)。


关于替代方案的另一个建议:
作为MATLAB替代方案,我正在使用SciLab。它像Octave一样免费,拥有一个体面的社区提供帮助和支持,并且其文档非常好。内置的文档和功能帮助类似于MATLAB的文档和帮助。(我最喜欢的是一键执行示例的能力)。语法也类似于MATLAB。

关于SciLab和MATLAB之间的异同,本文档可能对您很感兴趣:《从Matlab用户的角度介绍Scilab》,Eike Rietsch,2010年5月(PDF)

与MATLAB相比,SciLab的另一个优点是:启动和GUI更快。我还没有尝试过Octave。


1
我不是的Scilab的粉丝,我的第一印象是,有很多的语法和基本功能(相对于Matlab的)小的差异,但没有任何的要命 Python有弥补的不兼容性。
mdaoust 2012年

嗯...根据您的评论,David Ketcheson回答,似乎真的值得尝试Python。
Torbjörn

5

实际示例:

我在工作中使用MATLAB,上学期参加了斯坦福大学的免费在线机器学习课程。

我用八度做所有的功课。

我仅注意到2个差异(我仅使用核心功能):

  • 关于可以索引哪种类型的表达式,Octave稍微灵活一些。因此,如果您利用这一点,您的代码将无法移植。
  • 在我的安装中,pcolor()和image()绘图不适用于大小合理的数组(例如1000x1000),较小的数组(例如50x50)可以正常工作。

5

Octave对MATLAB编程语言的解释有些细微的差异。Octave分别使用“ endif”和“ endwhile”来关闭ifwhile语句。Octave还允许您在命令行上声明函数。但是,它也应该解析MATLAB解析的任何内容,因此,如果您坚持使用MATLAB的编程语言,那应该没问题。

请注意,这两个程序之间的最大区别在于内置函数完成了大多数数字上的繁琐工作,例如“ quad”,“ ode15s”等。但是,在使用“ help”命令时,所有这些功能都应记录清楚。如果您有在线帮助中未涵盖的更多具体问题,也可以使用Octave的邮件列表。


3
Octave非常乐意接受while循环和statemtents结束时的“ end”。
比尔·巴特

4

是的,您绝对可以,我做到了。但是,MATLAB的许多功能的确带有一些极其易于使用的工具箱和内置函数,它们在Octave中可能具有或不具有等效功能。

还应注意,虽然基本语言本身是兼容的(除了MATLAB中的新OO功能),Octave还在语法上添加了一些“附加”,例如能够为NEQ使用“!=”,并且还具有一些其他替代行为,例如解析内联函数的方式。这些小问题会导致Octave代码无法立即在MATLAB中运行,除非您已避免依赖该行为,否则请小心。

而且,MATLAB是一个完整的计算环境,而不仅仅是与优化的线性代数例程对接的语言。因此,您从Octave中学到的东西只会走得更远。如果您精通Octave,将可以在MATLAB中工作,但对MATLAB的工作效率却不如预期。


2

具有类MATLAB语法的最好的免费语言是Julia。它也更快,并且具有更广泛的软件包系统(还有其他更好的原因...),但是线性代数语法几乎完全相同(许多算法都可以通过更改A[i]为索引来转换为MATLAB A(i))。我相信这是目前最好的学习语言,并且只要使用它,您就会“偶然地了解MATLAB”。


0

是的,您可以使用Octave学习Matlab。当然有一些限制。

Octave和Matlab共享许多语法。在这方面,两者可以互换。尽管Octave具有beta版的新图形用户界面(GUI),但Matlab的体验更加丰富且用户友好,特别是在处理图形时。随着Octave图形环境的改善,这两个系统可能会进一步融合。

Coursera上有许多免费课程,可在课程期间为您提供免费的Matlab临时学生许可证。搜索机器学习课程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.