Finding and using sparse matrix indices

조회 수: 1 (최근 30일)
Christopher
Christopher 2014년 2월 24일
답변: Iain 2014년 2월 24일
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.

채택된 답변

Iain
Iain 2014년 2월 24일
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);

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by