How to quickly calculate the sum of the transpose of a sparse matrix?
조회 수: 6 (최근 30일)
이전 댓글 표시
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
답변 (2개)
Matt J
2021년 7월 7일
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
Matt J
2021년 7월 9일
I do not know if you have a faster way to replace find.
Yes, don't use it. Use logical indexing instead.
Stephen23
2021년 7월 9일
편집: Stephen23
2021년 7월 9일
"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?
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!