2016-04-03 17 views
2

auswählen Ich versuche, einige Elemente mithilfe von booleschen Operationen in MATLAB auswählen.Wie Element mit boolescher Matrix in Matlab

I A = [1 2 3; 4 5 6; 7 8 9]

A = 

1  2  3 
4  5  6 
7  8  9 

haben, wenn A([true true false; true true false]) ich mit bekommen:

1 
4 
7 
2 

Ist es nicht sein soll ?:

1 
4 
2 
5 

Wer weiß, was los ist?

Antwort

0

Siehe this example für die Dokumentation zu logical indexing. Es kann nicht so eindeutig erklärt werden, wie es sollte, aber wenn Sie einen logischen Index mit weniger Elementen angeben, die dann die indizierte Matrix (A), dann die Indizierung Matrix linearisiert, so dass:

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

entspricht:

Mit anderen Worten, die Indexmatrix (idx1) Elemente geben die Ausgabe in spaltenweiser Reihenfolge an.

Wenn Sie wollen, was Sie wenn Sie erhalten sollten, können Sie verwenden:

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

oder Sie können Ihre ursprüngliche Index Array-Transformation:

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

oder einfach nur benutzen

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