quaternions stored as a + b*i + c*j + d*k, with one coefficient tuple per element.

Syntax

q = quaternion(a, b, c, d)
q = quaternion(abcd)

Description

Separate coefficient arrays broadcast together. A coordinate array has shape (…, 4), or (4, n) for a column-oriented list. Construction preserves the norm and sign; q and -q are distinct quaternions. Use rotation for unit quaternions representing proper rotations, where opposite signs represent the same rotation.

Quaternion multiplication composes products in the usual order. For unit quaternions, q*v applies the rotation to a vector3d. Indexing and reshaping preserve the container.

Keywords

keyword default description
dtype   floating-point type of the stored coefficients

Properties

a, b, c, d real and imaginary coefficients as arrays of the container shape
data numeric coefficient array with a trailing axis of length four
shape shape of the quaternion array, excluding the four coefficients

See also

rotation, orthogonalTransform, quaternion.normalize

Members

a the real part a of the quaternions
abcd the coefficients a, b, c, d as one array of shape (…, 4)
angle the rotational angle in [0, pi], or the angle between two, both from atan2 forms that keep their digits near 0 and pi
angle_outer the rotational angle in [0, pi], or the angle between two, both from atan2 forms that keep their digits near 0 and pi
axis return a unit vector along the rotation axis of each quaternion
b the coefficient b of i
c the coefficient c of j
cat the list of the operands, MATLAB’s [a, b]
conj return the quaternion conjugate a - b*i - c*j - d*k
ctranspose the transpose of the leading axes
cubochoric express rotations as equal-volume coordinates in a cube
d the coefficient d of k
dot the inner product of the coefficients
dot_outer the inner product of the coefficients
double the coordinates of the images of an embedding in their orthonormal basis, one row per orientation, e.double()
eq equal within the angular tolerance tol, MATLAB’s eq
Euler the Euler angles (alpha, beta, gamma) in the convention named, the session’s by default
export write a map to the file the extension names
geodesic interpolate along the shortest rotational path between two rotations
homochoric express rotations as equal-volume coordinates in a ball
horzcat the list of the operands, MATLAB’s [a, b]
inv return the multiplicative inverse of each quaternion
isnan whether a quaternion has a NaN coefficient
log the tangent vector pointing from the reference, the identity by default, to this rotation
logm logm(T) is T.logm(): the matrix logarithm
matrix return the numeric rotation matrix of each unit quaternion
mean the mean of a list of quaternions, with the principal moments and axes of inertia
minus  
mrdivide  
mtimes  
ne Return self!=value
norm the norm of the quaternions, sqrt(a^2 + b^2 + c^2 + d^2)
normalize divide each quaternion by its Euclidean coefficient norm
phi1 first Bunge Euler angle phi1 in radians, returned in the shape of the rotations
phi2 third Bunge Euler angle phi2 in radians, returned in the shape of the rotations
Phi second Bunge Euler angle Phi in radians, returned in the shape of the rotations
plot plot(x, …) draws x as its kind is drawn
plus  
project2EulerFR the Bunge Euler angles of the representative of every orientation inside the Euler box of its frames, as MATLAB’s project2EulerFR: three arrays in the shape of the list
quaternion quaternions stored as a + b*i + c*j + d*k, with one coefficient tuple per element
rdivide  
Rodrigues express each rotation as an axis scaled by tan(omega/2)
scatter directions or crystal directions drawn as markers on a spherical plot, coloured by data or labelled
std the mean angular deviation of a list of rotations from their mean
subsref  
sum sum(x) of an MTEX object by its own sum, of an array or with an axis as NumPy sums, of any other iterable as Python sums, so that from mtex import * keeps Python’s sum
times  
transpose the transpose of the leading axes
uminus  
unique the disjoint list of quaternions, those equal up to a tolerance in the coefficients taken as one
vertcat the list of the operands, MATLAB’s [a, b]

Used on

RotationDefinition

MATLAB’s quaternion_index

source

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/quaternion_index_py.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.