0

所以我有一个 = rand(3,3,2)。

然后我有一个逻辑索引,类似于

b = [1 0 0; 0 0 1; 1 1 1]

b =

 1     0     0
 0     0     1
 1     1     1

但我希望能够为 a(:,:,1) 和 a(:,:,2) 调用 a(b)。a(:,:,1) 和 a(:,:,2) 都有共享的逻辑索引。我怎么能做到这一点?

4

3 回答 3

2
a1 = a(:,:,1);
a2 = a(:,:,2);

selected_a1 = a1(b==1);
selected_a2 = a2(b==1);

在这里,我们选择矩阵 a 中 b 为 1 的所有值,然后将它们存储到 selected_a1 和 selected_a2 中。

于 2013-04-01T22:51:39.423 回答
1

假设b是一个逻辑数组(如果不是,则通过 do 进行转换b = logical(b);),然后尝试以下操作:

a([b(:); b(:)])
于 2013-04-01T22:43:56.883 回答
1

如果b是一个逻辑数组,那么你可以做

n = size(a, 3);

a(repmat(b, [1,1,n]))
于 2013-04-01T22:45:32.647 回答