MATLAB: Submatrix mit logischer Indizierung extrahieren

8

Ich suche eine elegante Lösung für dieses sehr einfache Problem in MATLAB. Angenommen, ich habe eine Matrix

%Vor%

und eine logische Variable der Form

%Vor%

Wenn ich versuche, die Elemente von M , die zu 1 -Werten in I gehören, abzurufen, bekomme ich einen Spaltenvektor

%Vor%

Was wäre der einfachste Weg, die Matrix [5 7 ; 6 13] von dieser logischen Indizierung zu erhalten?

Wenn ich die Form der Nicht-Null-Elemente von I kenne, kann ich nach der Indizierung eine Umformung verwenden, aber das ist kein allgemeiner Fall.

Ich bin mir auch bewusst, dass das Standardverhalten für diese Art der Indizierung in MATLAB Konsistenz in Bezug auf den Fall, in dem Werte ungleich Null in I keine Matrix bilden, erzwingt, aber ich frage mich, ob es ein einfache Lösung für diesen speziellen Fall.

    
foglerit 10.07.2012, 18:03
quelle

3 Antworten

11

Dies ist eine Möglichkeit, dies zu tun. Es wird angenommen, dass alle Zeilen von I dieselbe Anzahl von Einsen haben. Es wird auch angenommen, dass alle Spalten von I gleiche Nummer Eins haben, weil Submatrix rechteckig sein muss.

%Vor%     
nrz 10.07.2012, 18:14
quelle
3

Hier ist eine sehr einfache Lösung:

%Vor%     
Dennis Jaheruddin 26.03.2013 15:08
quelle
2
%Vor%     
kay 10.07.2012 18:14
quelle