使用矩阵的逻辑索引
在选出A矩阵中与B矩阵内非零值位置相同的元素,为一列向量。所以不是根据值来的,而是根据位置来的。B是一个矩阵由逻辑0和1组成。即B中为非零的位置,就是要选出的A元素位置。
A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
B = logical([0 1 0; 1 0 1; 0 0 1]);
B =
0 1 0
1 0 1
0 0 1
A(B)
ans =
4
2
6
9
find函数返回B中非零元素的索引,
find(B)
ans =
2
4
8
9
所以也就是选出A中序号为2 4 8 9的元素,组成列向量。
例1
rand('twister', 5489);
B = A > 0.5;
A(B) = 0
A =
0 0.0975 0.1576 0.1419 0
0 0.2785 0 0.4218 0.0357
0.1270 0 0 0 0
0 0 0.4854 0 0
0 0 0 0 0
例2
A = magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1