Я ищу элегантное решение этой очень простой проблемы в 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
не образуют матрицу, но мне интересно, существует ли простой решение для данного конкретного случая.