所以我有一个 = 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) 都有共享的逻辑索引。我怎么能做到这一点?
所以我有一个 = 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) 都有共享的逻辑索引。我怎么能做到这一点?
a1 = a(:,:,1);
a2 = a(:,:,2);
selected_a1 = a1(b==1);
selected_a2 = a2(b==1);
在这里,我们选择矩阵 a 中 b 为 1 的所有值,然后将它们存储到 selected_a1 和 selected_a2 中。
假设b
是一个逻辑数组(如果不是,则通过 do 进行转换b = logical(b);
),然后尝试以下操作:
a([b(:); b(:)])
如果b
是一个逻辑数组,那么你可以做
n = size(a, 3);
a(repmat(b, [1,1,n]))