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