Cucco’s Compute Hack

コンピュータ関係の記事を書いていきます。

Matlabで1×Nのサイズのベクトルを2次元配列に変換

まずは変換のルールを確認

3×4の2次元配列を用意。

>> a=[[1 2 3 4]; [5 6 7 8]; [9 10 11 12]]

a =

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

reshape()で1×Nに変換。列方向に拾って1×Nを作る様子。

>> b=reshape(a,1,[])

b =

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

4列の形にしてほしいので、reshape()でn×4に変換。元に戻りました。

>> c=reshape(b,[],4)

c =

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

元に戻りました。

行方向で2次元配列を拾って行ってほしい

手元にあるデータの並びは行方向に拾った感じのデータなので、それを2次元配列にしたい。

1×nのベクトルを用意。

>> d=[1 2 3 4 5 6 7 8 9 10 11 12]

d =

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

あとで転置するので、行を4行になるようにreshape()

>> e=reshape(d,4,[])

e =

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

転置すると期待通りに。

>> f=transpose(e)

f =

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