Replace elements of sparse matrix from a full matrix.
이전 댓글 표시
Dear Experts
I have a huge matrix, M with zeros. I am converting M into sparse using sparse(M). After, I want to replace few positions (idx) of M from other matrix, N. I am using the following: M(idx) = N(idx). But, this is very very slow. Also MATLAB warns: This sparse indexing expression is slow. How I can do the above task?
Thanks in advance.
답변 (1개)
Jos (10584)
2016년 3월 4일
0 개 추천
What don't you replace the elements before converting it?
댓글 수: 8
KSSV
2016년 3월 4일
Jos (10584)
2016년 3월 4일
I don't get it. You do start off with a full matrix M which you convert using sparse, don't you?
KSSV
2016년 3월 5일
Walter Roberson
2016년 3월 5일
If you know you are replacing zeros, then you can sparse() up the values that are going in as a second sparse matrix, and add that to the first sparse matrix.
KSSV
2016년 3월 5일
Walter Roberson
2016년 3월 5일
When you create your original sparse matrix, be sure to allow extra nzmax; see http://www.mathworks.com/help/matlab/ref/spalloc.html
KSSV
2016년 3월 5일
Walter Roberson
2016년 3월 5일
Then spalloc() would be appropriate. If you create a matrix without using it or equivalent then you end up doing a lot of sparse reallocations as you add in new values.
카테고리
도움말 센터 및 File Exchange에서 Sparse Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!