使用下标访问值而不使用sub2ind

时间:2009-07-18 04:24:05

标签: matlab indexing matrix multidimensional-array

考虑矩阵 M 以及存储在 I J 列中的一组下标。我需要访问I& A指定的元素。 J没有将它们转换为线性索引(即使用sub2ind)。 E.g。

M = [1 2 3;4 5 6;7 8 9];
I = [1 1 1];
J = [1 2 3];

VALS = [1 2 3];

此外,由于I& J是huge

VALS = diag(M(I,J));

为了演示,这是我正在寻找的东西,

VALS = M(sub2ind(size(M),I,J));

基本上,sub2ind似乎花了很多时间,现在我正在寻找方法来访问这些元素而不将下标转换为索引。任何其他方式都是可行的,只要它比使用sub2ind的方法更快。

1 个答案:

答案 0 :(得分:7)

这个可能比使用SUB2IND更快

[r,c] = size(M);  % Get the size of M
vals = M(I+r.*(J-1));  % Compute a linear index with vector operations