sti*_*eer 4 math matlab rotational-matrices
我有一个从一个基础到另一个基础的旋转矩阵:
Rot = [0.1227 0.0269 -0.9921;...
0.8635 -0.4956 0.0934;...
0.4892 0.8681 0.0840];
Run Code Online (Sandbox Code Playgroud)
我使用 MATLABrotm2eul函数获取“ZYZ”约定中的欧拉角:
eulZYZ = rotm2eul(Rot,"ZYZ")
Run Code Online (Sandbox Code Playgroud)
这是 -0.0938 -1.4867 -1.0577. 如果我使用反函数eul2rotm:
RotMATLAB = eul2rotm(eulZYZ,"ZYZ");
Run Code Online (Sandbox Code Playgroud)
结果不同于Rot(第三列除外):
RotMATLAB =
-0.0406 0.1189 -0.9921
-0.8712 0.4819 0.0934
0.4892 0.8681 0.0840
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?我认为一旦你指定了“ZYZ”,就只存在一个轮换。
旋转矩阵通常被假定为具有 determinant 1,但您的“旋转”矩阵Rot具有 determinant det(Rot) = -1,这意味着您的矩阵还包含(奇数)次反射,而不仅仅是旋转。
所以没有希望rotm2eul为这个矩阵产生任何有意义的输出。尝试通过例如首先将您自己的矩阵乘以反射矩阵来确保Rot具有行列式1,例如
diag([1,1,-1])
Run Code Online (Sandbox Code Playgroud)