Replace elements of sparse matrix from a full matrix.
Afficher commentaires plus anciens
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.
Réponses (1)
Jos (10584)
le 4 Mar 2016
0 votes
What don't you replace the elements before converting it?
8 commentaires
KSSV
le 4 Mar 2016
Jos (10584)
le 4 Mar 2016
I don't get it. You do start off with a full matrix M which you convert using sparse, don't you?
KSSV
le 5 Mar 2016
Walter Roberson
le 5 Mar 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
le 5 Mar 2016
Walter Roberson
le 5 Mar 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
le 5 Mar 2016
Walter Roberson
le 5 Mar 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.
Catégories
En savoir plus sur Sparse Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!