Python 3.x Scipy与Matlab:三维旋转矩阵
我比较了用于创建三维旋转矩阵的scipy和MATLAB函数的输出,两个程序显示了不同的结果 第一项科学: 现在,matlabs功能:Python 3.x Scipy与Matlab:三维旋转矩阵,python-3.x,scipy,scipy-spatial,Python 3.x,Scipy,Scipy Spatial,我比较了用于创建三维旋转矩阵的scipy和MATLAB函数的输出,两个程序显示了不同的结果 第一项科学: 现在,matlabs功能: >> eul2rotm([pi/2 pi/2 0], 'ZYZ') ans = 0.0000 -1.0000 0.0000 0.0000 0.0000 1.0000 -1.0000 0 0.0000 >> eul2rotm([0 pi/2 pi/2], 'ZYZ')
>> eul2rotm([pi/2 pi/2 0], 'ZYZ')
ans =
0.0000 -1.0000 0.0000
0.0000 0.0000 1.0000
-1.0000 0 0.0000
>> eul2rotm([0 pi/2 pi/2], 'ZYZ')
ans =
0.0000 -0.0000 1.0000
1.0000 0.0000 0
-0.0000 1.0000 0.0000
最后,旋转的顺序似乎有所不同。但是哪一个是正确的呢?谢谢你的帮助
使用SciPy 1.3.1、NumPy 1.15.4和Matlab R2018b进行测试。相同的阵列,但按顺序切换。轴的命名或方向可能有所不同。MATLAB的默认顺序为“ZYX”。使用
scipy
时,“xyz”和“xyz”之间存在差异。事实上,如果使用“ZYZ”,则scipy
数组与MATLAB矩阵匹配。感谢您的解释。我确实忽略了'xyz'
和'xyz'
之间的区别。
>> eul2rotm([pi/2 pi/2 0], 'ZYZ')
ans =
0.0000 -1.0000 0.0000
0.0000 0.0000 1.0000
-1.0000 0 0.0000
>> eul2rotm([0 pi/2 pi/2], 'ZYZ')
ans =
0.0000 -0.0000 1.0000
1.0000 0.0000 0
-0.0000 1.0000 0.0000