考虑一个矩阵 M 和一组存储在 I J 列中的下标。我需要访问I&J指定的元素而不将其转换为线性索引(即使用sub2ind)。例如。

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的方法更快,任何其他方法都是可行的。

最佳答案

这可能比使用SUB2IND更快:

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

关于matlab - 使用下标访问值而不使用sub2ind,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1146719/

10-10 21:37