Replace elements of sparse matrix from a full matrix.
Mostrar comentarios más antiguos
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.
Respuestas (1)
Jos (10584)
el 4 de Mzo. de 2016
0 votos
What don't you replace the elements before converting it?
8 comentarios
KSSV
el 4 de Mzo. de 2016
Jos (10584)
el 4 de Mzo. de 2016
I don't get it. You do start off with a full matrix M which you convert using sparse, don't you?
KSSV
el 5 de Mzo. de 2016
Walter Roberson
el 5 de Mzo. de 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
el 5 de Mzo. de 2016
Walter Roberson
el 5 de Mzo. de 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
el 5 de Mzo. de 2016
Walter Roberson
el 5 de Mzo. de 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.
Categorías
Más información sobre Sparse Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!