Replace elements of sparse matrix from a full matrix.
Ältere Kommentare anzeigen
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.
Antworten (1)
Jos (10584)
am 4 Mär. 2016
0 Stimmen
What don't you replace the elements before converting it?
8 Kommentare
KSSV
am 4 Mär. 2016
Jos (10584)
am 4 Mär. 2016
I don't get it. You do start off with a full matrix M which you convert using sparse, don't you?
KSSV
am 5 Mär. 2016
Walter Roberson
am 5 Mär. 2016
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
am 5 Mär. 2016
Walter Roberson
am 5 Mär. 2016
When you create your original sparse matrix, be sure to allow extra nzmax; see http://www.mathworks.com/help/matlab/ref/spalloc.html
KSSV
am 5 Mär. 2016
Walter Roberson
am 5 Mär. 2016
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.
Kategorien
Mehr zu Sparse Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!