Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab与倍频程计算的差异_Matlab_Octave - Fatal编程技术网

Matlab与倍频程计算的差异

Matlab与倍频程计算的差异,matlab,octave,Matlab,Octave,我已经实现了一个朴素的贝叶斯分类器。在Matlab上,我的分类函数需要2分钟才能运行,而倍频程需要25分钟才能运行相同的代码。有人知道是什么原因导致ocative运行较慢,以便我可以相应地调整代码吗 PS:我必须提交给一个运行octave而不是Matlab的服务器。Matlab在运行代码时做了很多“隐藏”优化(octave可能也是,但不同)。许多优化(例如)都涉及到,如果不在函数中修改这些参数,而是通过引用传递,则不会复制函数的参数。例如,在传递大型矩阵时,这可以显著加快计算速度,因为在其他情况

我已经实现了一个朴素的贝叶斯分类器。在Matlab上,我的分类函数需要2分钟才能运行,而倍频程需要25分钟才能运行相同的代码。有人知道是什么原因导致ocative运行较慢,以便我可以相应地调整代码吗

PS:我必须提交给一个运行octave而不是Matlab的服务器。

Matlab在运行代码时做了很多“隐藏”优化(octave可能也是,但不同)。许多优化(例如)都涉及到,如果不在函数中修改这些参数,而是通过引用传递,则不会复制函数的参数。例如,在传递大型矩阵时,这可以显著加快计算速度,因为在其他情况下,大部分计算时间都花在复制上。有很多很多类似的优化,但并不是所有的优化都有文档记录


如果没有具体的计算知识,很难猜测差异来自何处。我不知道octave是否与matlab profiler等价,但如果是,我会用它来找出octave一直在哪里。对于调试,我还建议将Octave下载到您的PC并在那里进行调试。

您必须发布代码。但有一点是,较新的MATLAB版本有JIT编译器,它修复了循环的许多效率低下的问题,而Octave还没有。因此,如果你有一些循环,你的倍频程代码可能会从矢量化中受益。是的,我的经验也是,最近MATLAB中的JIT编译器消除了矢量化代码的许多历史好处。如果它的环路很重,它仍然会受到倍频程环路减速的影响。是的,自Daniel Kraft实施octave 3.6(2012年1月发布)以来,就有了一个分析器。这是2015年OctConf大会的一个会议,当然还有。