MATLAB: 配列の要素・行・列の追加

MATLABでよく使う配列操作をメモしておく。

行ベクトルの要素の追加

[a b]

>> b = 11:1:20

b =

    11    12    13    14    15    16    17    18    19    20

>> a = 0:1:10

a =

     0     1     2     3     4     5     6     7     8     9    10

>> a = [a b]

a =

     0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20

horzcat(A, B)

>> a = 0:1:10

a =

     0     1     2     3     4     5     6     7     8     9    10

>> a = horzcat(a, 11)

a =

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

列ベクトルの要素の追加

[a; b]

>> a = (1:1:10)'

a =

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10

>> b = (11:1:20)'

b =

    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

>> [a; b]

ans =

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

vertcat

>> a = (1:1:10)'

a =

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10

>> b = (11:1:20)'

b =

    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

>> a = vertcat(a, b)

a =

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

空の配列に追加

バッチ処理して配列を追加した場合がよくある。 その場合は、まず空の配列を用意しておく。
>> a = double.empty(0, 10)

a =

  0×10 empty double matrix

行か列のどちらかのサイズを0にしておく必要がある。

それからvertcat / horzcatで行または列を追加する:

>> a = vertcat(a, 1:1:10)

a =

     1     2     3     4     5     6     7     8     9    10

>> a = vertcat(a, 11:1:20)

a =

     1     2     3     4     5     6     7     8     9    10
    11    12    13    14    15    16    17    18    19    20

要素を削除するには

追加だけでなく、要素を削除する方法もメモしておく。

例えば 3番目の要素を削除するには

a(3) = [];
とすれば良い。
>> a = (1:1:10)

a =

     1     2     3     4     5     6     7     8     9    10

>> a(3) = []

a =

     1     2     4     5     6     7     8     9    10

このやり方は列ベクトルか行ベクトルだけに使える(行列の場合は使えない)。

このやり方はセル配列に対しても使える。(Matlabでセル配列内の特定の要素を削除 – yuishiノート)