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일

1 개 추천

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개)

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품

질문:

2014년 2월 24일

답변:

2014년 2월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by