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 个评论

So I guess it would be enough with:
siz = size(A);
IND = sub2ind(siz,ind_rows,ind_cols);
res = A(IND);
Thank you!

请先登录,再进行评论。

更多回答(1 个)

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

1 个评论

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 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by