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
行列を形成しない場合に関して一貫性を強制することを認識していますが、この特定のケースに対する簡単な解決策があるかどうか疑問に思います.