MATLAB: Auszug submatrix mit logischen Indizierung

Ich bin auf der Suche nach einer eleganten Lösung für dieses sehr einfache problem in MATLAB. Angenommen ich habe eine matrix

>> M = magic(5)

M =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9 

und eine logische variable der form

I =

     0     0     0     0     0
     0     1     1     0     0
     0     1     1     0     0
     0     0     0     0     0
     0     0     0     0     0

Wenn ich versuche, die Elemente abzurufen, der M zugeordnet 1 Werte in I bekomme ich einen Spalten-Vektor

>> M(I)

ans =

     5
     6
     7
    13

Was wäre der einfachste Weg, um die matrix [5 7 ; 6 13] von diesem logischen Indizierung?

Wenn ich weiß, dass die Form der nicht-null-Elemente von I, ich kann mit einer Umgestaltung nach der Indizierung, aber das ist keine Allgemeine Fall.

Auch, ich bin mir bewusst, dass das Standardverhalten für diese Art der Indizierung in MATLAB erzwingt Konsistenz in Bezug auf den Fall, in dem nicht-null-Werte in I nicht in form einer matrix, aber ich Frage mich, ob es gibt eine einfache Lösung für diesen speziellen Fall.

InformationsquelleAutor foglerit | 2012-07-10
Schreibe einen Kommentar