How to quickly calculate the sum of the transpose of a sparse matrix?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Dear All,
I have a very big sparse matrix A. I want to obtain the sum of its transpose of the selected columns in A. Here is my code:
B = A(:,selectedCol)';
sumA = sum(B);
I am wondering if there is a faster way to do the above calculation.
Thanks a lot in advance.
Benson
1 Kommentar
Antworten (2)
Matt J
am 7 Jul. 2021
Depening on the size of selectedCols, it may also help to cast the operation as a matrix/vector multiplication
A=sprand(1e6,1e5,100/1e6);
selectedCol=1:10:size(A,2);
tic;
B=sum( A(:,selectedCol)');
toc
tic
B=sum( A(:,selectedCol) ,2)';
toc
z=false(size(A,2),1);
tic
x=z;
x(selectedCol)=1;
B=(A*x)';
toc
5 Kommentare
Matt J
am 9 Jul. 2021
I do not know if you have a faster way to replace find.
Yes, don't use it. Use logical indexing instead.
Stephen23
am 9 Jul. 2021
Bearbeitet: Stephen23
am 9 Jul. 2021
"I do not know if you have a faster way to replace find."
Answers and comments on your previous threads related to FIND:
https://www.mathworks.com/matlabcentral/answers/866000-how-to-run-find-function-faster#answer_734225
Have you considered using logical indexing?
Siehe auch
Kategorien
Mehr zu Performance and Memory finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!