読者です 読者をやめる 読者になる 読者になる

stMind

You'll never blog alone

matlabでは行列を行ベクトルにするとcolumn major order

3x3の行列Aを9x1の行ベクトルに直すと、1, 2, 3, 4, 5, 6, 7, 8, 9となると思っていたら、1, 4, 7, 2, 5, 8, 3, 6, 9だった... (column major order)

>> A

A =

     1     2     3
     4     5     6
     7     8     9

>> A(:)

ans =

     1
     4
     7
     2
     5
     8
     3
     6
     9

>> 

ちなみに、numpyだと指定しない限り、row major orderになる。

In [15]: A
Out[15]: 
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

In [16]: np.ravel(A)
Out[16]: array([1, 2, 3, 4, 5, 6, 7, 8, 9])

In [17]: np.ravel(A, order='F')
Out[17]: array([1, 4, 7, 2, 5, 8, 3, 6, 9])