我是一个懂Python, Ruby和一些C语言的程序员,我正在决定是学习GNU Octave还是MATLAB。我知道它们有很多共同点,但我不清楚它们的语法甚至数据结构有多相似。上面的链接显示了几个语法相似或相同的例子。整个语言都是这样吗?
我正在努力学习这门语言,以便进行更多的科学计算,可能会使用一些图像分析库。
另外,MATLAB值这个价吗?
我是一个懂Python, Ruby和一些C语言的程序员,我正在决定是学习GNU Octave还是MATLAB。我知道它们有很多共同点,但我不清楚它们的语法甚至数据结构有多相似。上面的链接显示了几个语法相似或相同的例子。整个语言都是这样吗?
我正在努力学习这门语言,以便进行更多的科学计算,可能会使用一些图像分析库。
另外,MATLAB值这个价吗?
当前回答
MATLAB首先是一个商业产品。因此,MATLAB中的一切都可以开箱即用。所有的核心功能都是可靠的,如果你在做一个特殊的项目,那么MATLAB可能有一个附加组件可以卖给你,它为你添加了很多额外的领域特定的。m文件。它并不便宜,但它有效,它将毫无怨言地完成工作。
Octave总是显示其开源、信息想要自由的根源。它是免费的,它会提醒你在任何机会都是免费的。它是由那些极度讨厌Windows的志愿者开发的。因此,Octave只能勉强在Windows上运行。令人惊讶的是,有这么多MATLAB特性存在。
但问题就在这里。每当您尝试做一些比琐碎复杂的事情时,Octave突然以微妙和难以理解的方式中断。哎呀——终端驱动程序在OpenGL层深处有一个溢出。你不能打印。哎呀,这些图表用字体做了一些奇怪的事情。祝你能找到原因。Octave和其他一些鲜为人知的免费软件之间存在一些隐藏的依赖关系,所以它无法编译。希望你能查出是哪一个。
八度响应是,嘿!这是免费软件!您拥有所有的源代码,并且您可以自己修复所有这些错误!也许如果我有无限的时间和资源,我可以把所有的时间都花在修复自由软件中的漏洞上,但我个人不这么做。如果我在学术界工作,我可能会。
因此,选择MATLAB还是Octave的核心问题归结为一个问题。有趣的是,在商业软件变体和自由软件变体之间进行选择时,这个问题总是一样的。
问题是:
你的钱比时间多吗?
其他回答
Octave is basically an open source version of MATLAB. It was written to be just that. MATLAB has a very nice GUI which makes it a bit easier to use, but the next stable release of Octave will also have a GUI, which I have tested in the unstable release, and looks fantastic. Octave is much more buggy because it was developed and maintained by a group of volunteers, where the development of MATLAB is funded by millions of dollars by industry. I'm still a student and am using a student version of MATLAB, but I am thinking of going over to Octave once the stable version with the GUI is released.
MATLAB可能比Octave强大得多,算法运行得更快,但对于大多数应用程序来说,Octave绰绰有余,在我看来,它是一个完全免费的神奇工具,而Octave是完全免费的。
我会说使用MATLAB,而你可以使用学术版本,但切换到Octave应该是无缝的,因为他们使用完全相同的语法。
最后,还有Simulink的问题。如果你想做仿真或控制系统设计(可能还有成千上万的其他用途),Simulink是非常棒的,并且附带MATLAB。我认为没有任何一款能与之媲美。虽然Scilab显然是一个“很好的”开源替代方案,但我还没有尝试过。
使MATLAB如此受欢迎和特别的是它在不同学科中出色的工具箱。由于您的主要目标是学习MATLAB,所以使用Octave或MATLAB并没有什么不同!
只是去买MATLAB而没有任何酷的工具箱(这基本上取决于你的专业)真的不是一笔合理的支出!
你绝对可以用Octave有一个好的开始,并在互联网上跟随大量的MATLAB教程。
我刚开始使用Octave。我见过有人用MATLAB。上面提到的一个主要区别是Octave有一个命令行界面,而MATLAB有一个GUI。根据我的经验,拥有一个GUI非常适合调试。
在Octave中,你必须执行命令来查看矩阵的长度,等等,但在MATLAB中,它使用良好的界面很好地显示了一切。但Octave是免费的,适合我做的基本任务。如果你确定你要做的只是基本的事情,或者你不确定你现在需要什么,那么就选择Octave。当你真的觉得需要的时候,你可以花钱买MATLAB。
对于罗迪·奥登豪斯的回答,我没有太多想补充的。我通常遵循的策略是,我写的所有函数都应该在Matlab中运行。
我在两个系统上测试了一些特定的功能,用于以下用例:
a) Octave不需要许可证服务器-例如,如果您的机构不支持本地许可证。我曾经使用过它,当时我使用脚本的系统没有连接到互联网,并且将运行很长一段时间(在实验室的一个角落),并由许多不同的用户使用。备注:这不是关于许可证费用,而是关于相关的技术问题。
b) Octave支持其他平台,例如树莓派(http://wiki.octave.org/Rasperry_Pi) -这可能会派上用场。
嵌套函数和闭包现在被许多语言支持,包括MATLAB。 JavaScript将闭包作为一流的设计原则。
遗憾的是,Octave不支持闭包(具有词法作用域的嵌套函数)。
根据Bug:嵌套函数的句柄还不受支持,人们甚至可能会觉得开发人员不想或不能把它做好。 顺便说一下,这个2013年的bug在2020年被修复了。
这将破坏大量的代码。没有解决方法。