Access to array elements

Hi,
I have a matrix, A, and I want to access the elements given by the vectors ind_rows, ind_cols. If I make A(ind_rows,ind_cols) I get a matrix of size ind_rows times ind_cols, but I am just interested in the diagonal of this matrix!
I have found a way to do this:
siz = size(A);
AA = A(1:end); % convert the matrix in a vector
IND = sub2ind(siz,ind_rows,ind_cols);
res = AA(IND);
It works, but I guess there must be a way to do this without rearranging the matrix in a vector, and in a cleaner way.
Thanks in advance!
Ana

 채택된 답변

Mr. Pavl M.
Mr. Pavl M. 2011년 11월 14일

0 개 추천

댓글 수: 1

Ana
Ana 2011년 11월 14일
So I guess it would be enough with:
siz = size(A);
IND = sub2ind(siz,ind_rows,ind_cols);
res = A(IND);
Thank you!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2011년 11월 14일

0 개 추천

Ana: The most common way to get the diagonals is to use the eye() function:
m_DiagonalsOnly = m(logical(eye(size(m, 1))))

댓글 수: 1

Ana
Ana 2011년 11월 14일
The problem is that in some cases the matrix A(ind_rows,ind_cols) is too big to be generated, so I needed something that did not create that matrix.
Anyway I am not sure I am understanding properly your suggestion, since to get the diagonal of a matrix I can just simply the diag command, can't I?
Thank you.

댓글을 달려면 로그인하십시오.

카테고리

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

질문:

Ana
2011년 11월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by