Transpose vs. Adjoint?

Why does Julia denotes a matrix/array transpose as adjoint?

A = [1 2 3 ; 4 5 6] # an array of 2*3
A' # In REPL, it shows as adjoint. Is it correct? Shouldn't it be called TRANSPOSE?


because it is not a transpose, it is an adjoint:

julia> a = rand(ComplexF64, 2,2)
2×2 Matrix{ComplexF64}:
 0.950914+0.0447945im  0.526487+0.223671im
 0.851739+0.626451im   0.559013+0.522106im

julia> transpose(a)
2×2 transpose(::Matrix{ComplexF64}) with eltype ComplexF64:
 0.950914+0.0447945im  0.851739+0.626451im
 0.526487+0.223671im   0.559013+0.522106im

julia> a'
2×2 adjoint(::Matrix{ComplexF64}) with eltype ComplexF64:
 0.950914-0.0447945im  0.851739-0.626451im
 0.526487-0.223671im   0.559013-0.522106im

Adjugate matrix - Wikipedia Specifically: " today the “adjoint” of a matrix normally refers to its corresponding adjoint operator, which is its conjugate transpose."


I’m guessing you are coming form Matlab where A’ means transpose(A). Alas, Julia is not Matlab and is not trying to be Matlab.

Uh? In Matlab A' does transpose conjugate. transpose(A) or A.' does transpose.


Huh. My memory has failed me here! It’s been a while since I last used Matlab I guess. Thank you for the correction.

1 Like

A.’ also used to be transpose in Julia, but was changed on account that it was conflicting with broadcast


@Mason you are right…I do come from MATLAB background.
Nevertheless, in Matrix algebra when I studied it, adjoint calculation was fairly complex with calculation of cofactors, while A’ used to be transpose of matrix, which is obtained by transpose(A) in Julia, and by A’ for real numbers. Am I right?
From matrix algebra point-of-view, adjoint of non-square matrix is not defined, hence the confusion.

The conjugate transpose is also known as the adjoint matrix

if you adopt this definition, then you can certainly define adjoint for non-square matrix in a consistent way. Of course, it only has those properties you mentioned when the matrix is square, but that’s fine.

Ah yes. This is a different sense of the word adjoint. It’s slightly overloaded terminology unfortunately. In Julia, Adjoint refers to the Hermitian adjoint.


If you just have a matrix with real numbers , and you need a transpose, then you can also use A’ (post scriptum for those not familiar with complex numbers)

1 Like

This is obviously some terminological clash. See Adjoint matrix (also conjugate tranpose or Hermitian adjoint) vs Adjugate matrix(also classical adjoint or adjunct).


I think this should be pointed out more forcefully. For most people, the distinction between adjoint and transpose is moot.

Is this also true for those who use complex matrices? :slight_smile:

That’s exactly the point! What fraction of people using Julia actually deal with complex numbers? Likely smaller than what you’d think. I’m not advocating that we change anything – certainly we want the definitions to be correct and precise. But we should also be clear that the distinction is only important for a small fraction of users. And that because Julia rocks it should all Just Work regardless.