2013-03-16 44 views
0

我有一个很大的稀疏矩阵,我需要按行排序它的数据。现在我只是在做稀疏矩阵逐行排序

sort(matrix,2, 'descend') 

,但我在想,如果,如果我换位矩阵,做了列排序,然后调换它恢复到原来的尺寸,或者相同的操作会更快出现是以其他方式获得更好的速度。

+0

您是否尝试为您的情况计时两个操作?我会说取决于矩阵和维度(行/列)的稀疏性。我的猜测是,当你沿着维度1或者维度2指定时,MATLAB优化了排序,并且你不需要为两个转置操作开销。除非像我之前说过的那样,您对矩阵的结构有了先验知识。 – gevang 2013-03-16 04:51:56

+1

我会认为在Matlab的人会想到转置排序转置,并使用它,如果它实际上更快。这是完整的矩阵。我不知道稀疏矩阵的确切内部结构,但我不认为转置甚至是重要的。至于速度 - 你有没有试过两种选择中的任何一种? – 2013-03-16 09:40:49

+0

是的,我试着计算它,最后它在列完成时只有0.20秒的速度,如果你考虑到了转置的开销,我估计没有任何结果。但是,我发现减速的罪魁祸首实际上是repmat,并不像我想的那样排序 – Orgrim 2013-03-17 23:29:06

回答

0

正如在评论中提到:

做了排序列是快一点,但所获得的时间是(多)小于用于转置矩阵两倍的时间。

可能没有通用的方法来加速,但是当你对特定矩阵结构有更多的了解时,可能有一种方法。