2016-04-03 76 views
2

我想通過在MATLAB中使用布爾運算來選擇一些元素。如何使用Matlab中的布爾矩陣選擇元素

我已經A = [1 2 3; 4 5 6; 7 8 9]

A = 

1  2  3 
4  5  6 
7  8  9 

當使用A([true true false; true true false])我得到:

1 
4 
7 
2 

是不是它應該是?:

1 
4 
2 
5 

有誰知道這是怎麼回事?

回答

0

有關logical indexing的文檔,請參閱this example。它可能不會很清楚,因爲它應該進行說明,但如果指定與然後索引矩陣(A),則索引矩陣線性化較少的元素的邏輯索引,使得:

A = [1 2 3; 4 5 6; 7 8 9]; 
idx1 = [true true false; true true false]; 
A(idx1) 

相當於:

idx1 = [true true false; true true false]; 
A(idx1(:)) 

換句話說,索引矩陣(idx1)元素按列順序指定輸出。

如果你想你,儘管你應該得到的東西,你可以使用:

idx2 = [true false true; true true false]; 
A(idx2) 

,或者你可以改變你的原始索引數組:

idx1 = [true true false; true true false]; 
idx2 = reshape(idx1.',2,3); 
A(idx2) 

或只使用:

idx3 = [true true false true true].'; 
A(idx3)