2013-03-16 2 views
0

대용량의 희소 행렬이 있고 행별로 데이터를 정렬해야합니다. 지금 난 그냥 희소 행렬의 행 단위 정렬

sort(matrix,2, 'descend') 

을하고 있어요하지만 난, 행렬을 전치했던 열에 정렬을 한 후 원래의 크기로 다시 전치 경우, 또는 경우에 같은 작업이 빨리 갈 것인지 궁금가 더 나은 속도를 얻을 수있는 다른 방법이었습니다.

코멘트에서 언급 한 바와 같이
+0

사례에 대한 두 가지 작업 시간을 측정 해 보셨습니까? 매트릭스와 차원 (행/열)의 희소성에 달려 있다고 말할 수 있습니다. 내 생각에 MATLAB은 차원 1 또는 2를 지정하는 경우 정렬을 최적화하므로 두 개의 조인 작업의 오버 헤드가 없어야합니다. 전에 말했듯이, 매트릭스의 구조에 대한 사전 지식이 없습니다. – gevang

+1

저는 Matlab의 사람들이 transpose-sort-transpose를 생각해 보았을 것이고 실제로 더 빠르다면 그것을 사용했다고 생각합니다. 이것은 전체 행렬에 대한 것입니다. 스파 스 매트릭스의 정확한 내부 구조를 알지 못하지만 전치가 중요하다고 생각하지 않습니다. 속도에 관해서 - 두 가지 옵션 중 하나를 타이밍을 시도 했습니까? –

+0

예, 타이밍을 시도했는데, 결국 0.20 초가 더 빠를 때 더 빨리 수행 할 수 있습니다. 그러나, 나는 감속을위한 범인이 실제로 repmat이고, 내가 생각한 것처럼 분류하지 않는다는 것을 발견했다. – Orgrim

답변

0

: 열을 기준으로 정렬을하는

는 조금 빠르지 만 얻을 수있는 시간이 (많이)를 두 번 행렬을 전치하는 데 사용되는 시간보다 작습니다.

속도를 높일 수있는 일반적인 방법은 없지만 특정 매트릭스 구조에 대해 더 많은 지식이있는 경우 방법이있을 수 있습니다.

관련 문제