logo

Juliaにおける一般的な行列の転置 📂Julia

Juliaにおける一般的な行列の転置

コード

julia> X = rand(0:9, 3, 3)
3×3 Matrix{Int64}:
 9  4  5
 4  8  9
 8  7  4

julia> X'
3×3 adjoint(::Matrix{Int64}) with eltype Int64:
 9  4  8
 4  8  7
 5  9  4

Juliaでは転置行列はtransposeまたはadjoint関数を使って求めることができ、さらには'演算子によって簡単に求めることもできる。

julia> Y = rand('0':'9', 3, 3)
3×3 Matrix{Char}:
 '8'  '3'  '8'
 '4'  '0'  '8'
 '2'  '3'  '9'

julia> Y'
3×3 adjoint(::Matrix{Char}) with eltype Union{}:
ERROR: MethodError: no method matching adjoint(::Char)

しかし、行列が$\mathbb{R}^{m \times n}$または$\mathbb{C}^{m \times n}$に属する通常の行列ではなく一般的な二次元配列、すなわち他のデータ型に対する行列である場合、上のように行列の転置が定義されておらずエラーが発生する。このときは次のようにpermutedims関数を使って転置を求めることができる。

julia> permutedims(Y)
3×3 Matrix{Char}:
 '8'  '4'  '2'
 '3'  '0'  '3'
 '8'  '8'  '9'