Adjoint of a quaternion matrix
C = adjoint(A, F, B)
adjoint(A) or adjoint(A, 'complex') returns a complex adjoint matrix. adjoint(A, 'real') returns a real adjoint matrix. adjoint(A, 'quaternion') returns a quaternion adjoint matrix (only valid for the case where A is a complex quaternion or biquaternion matrix). The default is a complex adjoint.
The third parameter (which may appear in the second position if the second is omitted), controls the layout of the adjoint, specifically whether the adjoint is organised in blocks by components (scalar, x, y, z) or with each quaternion represented as an adjoint block.
adjoint(A, 'block') returns a complex matrix with each quaternion represented by a 2-by-2 block. adjoint(A, 'real', 'block') returns a real adjoint matrix in which each quaternion is represented by a real adjoint block, and similarly for other cases.
There is no opposite for 'block'. 'block' is not supported with the option 'quaternion'.
The adjoint of a quaternion matrix is a matrix which is in some senses equivalent to the original quaternion or biquaternion matrix. For example, it shares the same singular values (although they may occur in duplicated pairs). This means that the adjoint can be used to verify the results of quaternion matrix algorithms. The adjoint representation is redundant - it utilises twice the storage of the quaternion matrix, and after processing, it may deviate from an accurate adjoint representation (for example the pairs of singular values may no longer be closely matched). By extension, the function can also compute a real adjoint matrix which is also an alternative representation of the quaternion matrix, but with real elements rather than complex. The third possibility (a quaternion adjoint) applies only in the case of complex quaternion (biquaternion) matrices. It yields a quaternion matrix which has equivalent properties (such as singular values or eigenvalues).
The definition of the adjoint matrix is not unique (several permutations of the layout are possible).
N.B. The layout of the matrix returned in the real case was changed after the release of QTFM Version 1.6. See the code for details.
>> q = [quaternion(1,2,3,4), quaternion(5,6,7,8);... quaternion(9,10,11,12), quaternion(13,14,15,16)]; >> show(q) q.S = 1 5 9 13 q.X = 2 6 10 14 q.Y = 3 7 11 15 q.Z = 4 8 12 16 >> adjoint(q) ans = 1.0000 + 2.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 7.0000 + 8.0000i 9.0000 +10.0000i 13.0000 +14.0000i 11.0000 +12.0000i 15.0000 +16.0000i -3.0000 + 4.0000i -7.0000 + 8.0000i 1.0000 - 2.0000i 5.0000 - 6.0000i -11.0000 +12.0000i -15.0000 +16.0000i 9.0000 -10.0000i 13.0000 -14.0000i >> adjoint(q, 'block') ans = 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i -3.0000 + 4.0000i 1.0000 - 2.0000i -7.0000 + 8.0000i 5.0000 - 6.0000i 9.0000 +10.0000i 11.0000 +12.0000i 13.0000 +14.0000i 15.0000 +16.0000i -11.0000 +12.0000i 9.0000 -10.0000i -15.0000 +16.0000i 13.0000 -14.0000i