MATLAB中的欧拉角差异



我有一个从一个基到另一个基的旋转矩阵:

Rot = [0.1227    0.0269   -0.9921;...
0.8635   -0.4956    0.0934;...
0.4892    0.8681    0.0840];

我使用MATLABrotm2eul函数来获得"ZYZ"约定中的欧拉角:

eulZYZ = rotm2eul(Rot,"ZYZ")

即CCD_ 2。如果我使用反函数eul2rotm:

RotMATLAB = eul2rotm(eulZYZ,"ZYZ");

结果不同于Rot(除了第三列(:

RotMATLAB =
-0.0406    0.1189   -0.9921
-0.8712    0.4819    0.0934
0.4892    0.8681    0.0840

发生了什么事?我想,一旦你指定了"ZYZ",就只存在一个旋转。

旋转矩阵通常被假设为具有行列式1,但您的"旋转";矩阵Rot有行列式det(Rot) = -1,这意味着矩阵还包含(奇数(个反射,而不仅仅是旋转。

因此rotm2eul没有希望为这个矩阵产生任何有意义的输出。试着做同样的事情,例如,首先将你自己的矩阵乘以反射矩阵,以确保Rot具有行列式1,就像一样

diag([1,1,-1])

相关内容

  • 没有找到相关文章