如何加快Matlab中的"排序"功能?

Hyp*_*nos 1 sorting performance matlab function

我正在使用Matlab的内置排序功能:

[temp, Idx] = sort(M,2);
Run Code Online (Sandbox Code Playgroud)

我想得到M的每一行的排序索引,这是一个大小> 50k的矩阵.

我努力搜索但没有找到任何东西..如果您有任何意见,将不胜感激!

car*_*sdc 9

为了了解你有多少改进空间,我建议用C语言编写一个测试程序并使用qsort或C++进行用户排序,并仔细计时7000个大小为7000的输入(或者你在Matlab中的任何设置) .

我将给你我的估计:可能Matlab的排序运行(在正确的矢量化代码上,像你的那样)和C++一样快,你只是看到运行一个算法的效果,需要O(n ^ 2 log n) .据Matlab的营销材料报道,它的排序功能比C的qsort更快,但是它带有一点点盐.

  • 所以,我用一个小的MEX函数进行基准测试,而Matlab的`sort`确实比`qsort`更快.将它放在10到500000个元素之间的各种大小的随机或排序数组上.在我的四核机器上,Matlab`sort`比`qsort`快4倍或5倍.(Windows XP x64,Matlab R2009b,Visual Studio 2005.)令人惊讶. (3认同)