1

假设我有一个矩阵 A

A = magic(5)

17    24     1     8    15
23     5     7    14    16
 4     6    13    20    22
10    12    19    21     3
11    18    25     2     9

现在我使用这个矩阵选择一个块

A(1:2, 1:2)

17    24
23     5

现在我需要 (1:2, 1;2) 给出的线性索引,它们是 (1 2 6 7)。使用 sub2ind:

sub2ind(size(A),[1:2], [1:2])

但是这个命令只返回 (1 7) 我该如何解决这个问题?

4

2 回答 2

3

假设您要选择A(1:2,2:3)

% Row and column indexes
rind = 1:2;
cind = 2:3;

pos  = bsxfun(@plus,rind', size(A,2)*(cind-1));

pos =
     6    11
     7    12

您可能希望将其重塑为列向量pos(:),或在一行中调用reshape().

于 2013-05-13T20:58:13.820 回答
0

您需要指定 4 个下标:[1 1][2 1]和.[1 2][2 2]

>> sub2ind(size(A),[1 2 1 2], [1 1 2 2])

ans =

     1     2     6     7
于 2013-05-13T20:45:45.967 回答