使用NDarray中前两个元素的逻辑索引?

时间:2013-04-01 22:40:30

标签: matlab

所以我有一个=兰特(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)都具有共享逻辑索引。我怎么能这样做?

3 个答案:

答案 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]))