2013-04-01 32 views
0

所以我有一個蘭特(3,3,2)。使用N-D數組中前2個元素的邏輯索引?

然後,我有這是類似的邏輯索引

B = [1 0 0; 0 0 1; 1 1 1]

B =

1  0  0 
0  0  1 
1  1  1 

但我想能夠調用一個(b)用於兩者(:,:,1)和(:,:, 2)。 (:,:,1)和(:,:,2)都有共享的邏輯索引。我將如何能夠做到這一點?

回答

1

如果b是邏輯陣列,那麼你可以做

n = size(a, 3); 

a(repmat(b, [1,1,n])) 
1

假設b是一個邏輯陣列(如果它不是,那麼做b = logical(b);轉換),那麼請嘗試以下操作:

a([b(:); b(:)]) 
2
a1 = a(:,:,1); 
a2 = a(:,:,2); 

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

在這裏,我們選擇矩陣a的所有值,其中b是1,然後將它們存儲到selected_a1和selected_a2中。

相關問題