使用向量的MATLAB sub2ind

时间:2013-05-13 20:36:31

标签: matlab matrix algebra

假设我有一个矩阵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)我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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()的一行中重新整形。

答案 1 :(得分: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