2013-03-16 45 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

正如在評論中提到:

做了排序列是快一點,但所獲得的時間是(多)小於用於轉置矩陣兩倍的時間。

可能沒有通用的方法來加速,但是當你對特定矩陣結構有更多的瞭解時,可能有一種方法。