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
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.