Finding and using sparse matrix indices

1 vue (au cours des 30 derniers jours)
Christopher
Christopher le 24 Fév 2014
Réponse apportée : Iain le 24 Fév 2014
I have the sparse matrix array L=
(36,67) 1
(39,70) 1
(42,73) 1
(45,76) 1
(48,79) 1
(51,82) 1
(54,85) 1
and a large matrix M. I need to use the index coordinates of each of the elements in L, offset the coordinates by some amount, find the element in matrix M having those coordinates, and multiply the result. The operation must be vectorized.
A pseudocode might look like:
out=L*M(Lrow+5,Lrow+Lcolumn-15);
where Lrow is the row in L and parentheses are the matrix coordinates in M, determined for each element in L.
Thanks.

Réponse acceptée

Iain
Iain le 24 Fév 2014
If L is the same size as M:
idx = find(L);
Move the idx around by adding 1 (moves it down one), or by adding the number of columns (moves it right one) - Just be aware that if you move them down far enough, they'll move right.
idx = idx + 1 + cols; % right AND down one.
the_values = M(idx);

Plus de réponses (0)

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by