Main Content

rotm2eul

Convert rotation matrix to Euler angles

Description

eul = rotm2eul(rotm) converts a rotation matrix, rotm, to the corresponding Euler angles, eul. The input rotation matrix must be in the premultiply form for rotations. The default order for Euler angle rotations is "ZYX".

For more details on Euler angle rotations, see Euler Angles.

example

eul = rotm2eul(rotm,sequence) converts a rotation matrix to Euler angles. The Euler angles are specified in the axis rotation sequence, sequence. The default order for Euler angle rotations is "ZYX".

example

[eul,eulAlt] = rotm2eul(___) also returns an alternate set of Euler angles that represents the same rotation eulAlt.

Examples

collapse all

rotm = [0 0 1; 0 1 0; -1 0 0];
eulZYX = rotm2eul(rotm)
eulZYX = 1×3

         0    1.5708         0

rotm = [0 0 1; 0 1 0; -1 0 0];
eulZYZ = rotm2eul(rotm,'ZYZ')
eulZYZ = 1×3

   -3.1416   -1.5708   -3.1416

Input Arguments

collapse all

Rotation matrix, specified as a 3-by-3-by-n matrix containing n rotation matrices. Each rotation matrix has a size of 3-by-3 and is orthonormal. The input rotation matrix must be in the premultiply form for rotations.

Note

Rotation matrices that are slightly non-orthonormal can give complex outputs. Consider validating your matrix before inputting to the function.

Example: [0 0 1; 0 1 0; -1 0 0]

Axis-rotation sequence for the Euler angles, specified as one of these string scalars:

  • "ZYX" (default)

  • "ZYZ"

  • "ZXY"

  • "ZXZ"

  • "YXY"

  • "YZX"

  • "YXZ"

  • "YZY"

  • "XYX"

  • "XYZ"

  • "XZX"

  • "XZY"

Each character indicates the corresponding axis. For example, if the sequence is "ZYX", then the three specified Euler angles are interpreted in order as a rotation around the z-axis, a rotation around the y-axis, and a rotation around the x-axis. When applying this rotation to a point, it will apply the axis rotations in the order x, then y, then z.

Data Types: string | char

Output Arguments

collapse all

Euler rotation angles in radians, returned as an n-by-3 array of Euler rotation angles. Each row represents one Euler angle set.

Example: [0 0 1.5708]

Alternate Euler rotation angle solution in radians, returned as an n-by-3 array of Euler rotation angles. Each row represents one Euler angle set.

Example: [0 0 1.5708]

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2015a

expand all