MATLAB :извлечь подматрицу с логической индексацией

Я ищу элегантное решение этой очень простой проблемы в MATLAB. Предположим, у меня есть матрица

>> 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 

и логическая переменная вида

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

Если я попытаюсь получить элементы M, связанные со значениями 1в I, я получу вектор-столбец

>> M(I)

ans =

     5
     6
     7
    13

Как проще всего получить матрицу [5 7 ; 6 13]из этой логической индексации?

Если я знаю форму не-нулевых элементов I, я могу использовать изменение формы после индексации, но это не общий случай.

Кроме того, я знаю, что поведение по умолчанию для этого типа индексации в MATLAB обеспечивает согласованность в отношении случая, когда не-нулевые значения в Iне образуют матрицу, но мне интересно, существует ли простой решение для данного конкретного случая.

8
задан nrz 26 March 2013 в 14:53
поделиться