21.1.2 Creating Permutation Matrices

Last-modified: 2025-03-06 (木) 20:38:46

21.1.2 順列行列の作成

置換行列を作成するために、Octaveは新しい関数を導入するのではなく、既存の構文をオーバーライドします。置換行列は、単位行列を置換ベクトルでインデックス付けすることで簡単に作成できます。つまり、qが長さnの置換ベクトルである場合、式

 P = eye (n) (:, q );

順列行列(特別な行列オブジェクト)を作成します。

eye (n) (q, :)

も機能します(行順列行列を作成します)。

eye (n) (q1, q2).
For example:
 eye (4) ([1,3,2,4],:)
⇒
Permutation Matrix
  1   0   0   0
  0   0   1   0
  0   1   0   0
  0   0   0   1
 eye (4) (:,[1,3,2,4])
⇒
Permutation Matrix
  1   0   0   0
  0   0   1   0
  0   1   0   0
  0   0   0   1

数学的には、単位行列は対角行列と置換行列の両方です。Octave では、eye (n)行列は 1 つのクラスしか持てないため、対角行列を返します。次に示すように、単位置換でインデックスを付けることで、この対角行列を置換行列に変換できます。これは単位行列の特別なプロパティです。他の対角行列をインデックス付けすると、通常は完全な行列が生成されます。

 eye (3)
⇒
Diagonal Matrix
  1   0   0
  0   1   0
  0   0   1
 eye(3)(1:3,:)
⇒
Permutation Matrix
  1   0   0
  0   1   0
  0   0   1

他の組み込み関数も順列行列を返すことができます。例としては、 invやluなどがあります。