Why is this sparse multiplication failing?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Patrick Mboma
il 7 Giu 2018
Commentato: sloppydisk
il 7 Giu 2018
Hi,
Why does Matlab run out of memory on the multiplication of these two sparse matrices?
The first one is of size 17249876309 x 29 but only has 7 non-zeros elements that are all on different rows and on different (albeit adjacent) columns.
The second one is of size 29 x 82 and has 432 non-zeros elements.
I can certainly exploit the nature of the sparsity in these two matrices, do the multiplication and reconstruct the big matrix.
Why does Matlab fail at doing this?
Thanks
2 Commenti
Risposta accettata
sloppydisk
il 7 Giu 2018
You could use the relevant indices to perform the multiplication:
b = sparse(17249876309, 29);
b(430: 490) = 1;
c = sparse(ones(29, 82));
[row, col] = find(b);
d = sparse(size(b, 1), size(c, 2));
d(row, 1:end) = b(row, :)*c;
spy(d)
h=gcf;
set(h.Children,'Ylim',[400 500]);
However it's probably not even necessary to construct the whole matrix again. Note that you have to use 1:end instead of : in the assignment, otherwise you get a memory error.
4 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Sparse Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!