Octave で行列/ベクトルのサイズを変更する

行列サイズを拡張する

既存の行列の存在しない領域の要素に代入を行うと、行列のサイズが自動的に拡張されます。 下記の例では、2x2 の行列に対して、(4,4) の位置に値を代入する操作をしています。

>> A = [1 2; 3 4]
A =

   1   2
   3   4

>> A(4, 4) = 7
A =

   1   2   0   0
   3   4   0   0
   0   0   0   0
   0   0   0   7

上記のように、行列のサイズは自動的に拡張されて、4x4 になります。 自動的に拡張されて、値が指定されていない部分の値は 0 が設定されます。

ベクトルのサイズも同様に拡張できます。

>> v = 1:3
v =

   1   2   3

>> v(7) = 100
v =

     1     2     3     0     0     0   100

もちろん、下記のように行列を結合した場合も、行列のサイズは自動的に拡張されることになります。

>> v = [1 2; 3 4]
v =

   1   2
   3   4

>> v = [v [5 6]']
v =

   1   2   5
   3   4   6

行列のサイズを縮小する

行列から部分行列を抽出すれば、行列のサイズを縮小したものとして扱うことができます。 下記の例では、ランダムに作成した 5x5 の行列から、3x3 の部分行列を抽出して、自分自身に書き戻しています。

>> A = floor(rand(5)*10)  % 0~9 のランダム値で 5x5 行列を生成
A =

   6   5   9   6   7
   8   8   4   7   4
   2   2   3   1   4
   3   4   0   3   0
   9   6   7   9   3

>> A = A(1:3, 1:3)
A =

   6   5   9
   8   8   4
   2   2   3