在我们的鞋带操作中,我们需要在一些更高级语言中对算法进行原型设计,然后才能在嵌入式硬件上实现C实现.
到目前为止,我们一直在使用MATLAB来做到这一点,但许可成本开始受到影响.我们正在考虑将我们的MATLAB代码移植到Octave.
有什么特别的理由不这样做吗?我们是否会破坏任何兼容性,特别是如果我们有外部合作伙伴坚持使用MATLAB?我们可以期待任何表现惩罚吗?
在2008年,我尝试做同样的事情.我很快注意到以下显示塞子:
工具箱不完整,没有经过充分测试.特别是我的作品所依赖的图像处理工具箱(大型节目制作者是没有实现imtransform).
与Matlab相比,Octave调试器和分析器是原始的.
如果您与他人合作,可能很难让他们改变.
如果您使用第三方工具箱,您可以自己使用它们.
Octave的情节不是出版质量.
但我不得不说,我对Octave与Matlab的兼容性印象深刻,如果你使用Matlab是基本的,你可能会很幸运.最后这是在2008年,在两年内事情可以改变很多.
就在我的头顶:
Octave没有很多工具箱,正如我在两个学期前尝试在机器学习课程中做作业时发现的那样.
Octave有一个低劣的调试器.这几乎是不可能的.
对于许多类型的操作,Matlab要快得多.
Matlab的情节要好得多.
Octave没有本机GUI.Octave有GUI,但它们不如Matlab的原生GUI.
我也测试过octave和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.
八度有几个MATLAB语法改进,例如,你可以说endif
endfor
和endfunction
,而不是只end
,这使得调试更加容易.
Octave还允许您动态生成函数,并在脚本和函数文件中定义了多个函数.这比matlab的单文件一功能方法更好.
最后,倍频拥有parcellfun
和pararrayfun
这是非常强大的并行处理工具,MATLAB完全没有.parfor
在matlab中有一个,但在我看来,这不是最好的方法.
八度音阶的缺点是他们略微落后于工具箱,但如果你看起来你可以找到相似的东西.fsolve
并且lsode
看起来有点慢,但由于某种原因,在八度音程中更加强大.对某些人来说,一个很大的缺点往往是缺少符号链接和DAQ工具箱,但这些东西无论如何都将是专有的.
Python/Numpy绝对值得一试:它更强大,但它们的语法针对更复杂的代码片段.
Octave没有guide
,这使得构建GUI非常容易.我经常使用指南为同事的非MATLAB制作工具.
对于您的用例,八度音程可能优于MATLAB:
它具有允许您编写稍微接近C的代码的语法.即+ =, - =,默认函数参数值,双引号字符串文字等...
假设您的芯片比台式机处理器慢,速度可能不会成为问题.
由于它的启动速度远远快于matlab,因此集成到shell脚本进行测试更为实用.
对于原型设计,绘图是绰绰有余的; 人们习惯于MATLAB的风格.
相对缺乏工具箱并不是什么大问题,因为无论如何它们都无法在您的目标平台上使用.
我使用它们,每当我切换时,我都会错过另一个的功能.
有趣的是,开源替代方案如何用于统计,而不用于数值分析.R(统计的八度)现在比商业S-plus(统计学的matlab)更受欢迎.为理由不从其他的答案中发现MATLAB中切换出来提及的问题也适用于R.但还是大家刚开始贡献,现在R为标准,更好的图形,更好的包装并没有更多的供应商锁定.
如果你能跨过囚犯的困境,那么你也可以更喜欢八度超过matlab.
在MATLAB上有一本很好的WikiBook,其中列出了MATLAB和Octave之间的差异.
根据我的经验,核心MATLAB可以很好地移植到Octave,但工具箱具有不同的兼容性,因此您的决定取决于您尝试编码的具体内容.
Octave缺少的一些东西,AFAIK,是与.NET代码和gui构建器的紧密集成guide
(尽管Octave可以使用许多其他GUI 构建工具).
此外,正如其他人所指出的那样,您使用MATLAB支付的大部分内容都是光滑的界面和调试/分析工具.经验丰富的程序员可能会选择替代方案,但新手可能会遇到困难.