python-3.x - Scipy vs Matlab:3D 旋转矩阵
问题描述
我比较了用于创建 3D 旋转矩阵的 scipy 和 MATLAB 函数的输出,这两个程序显示了不同的结果。
第一个 SciPys scipy.spatial.transform.Rotation:
>>> import numpy as np
>>> from scipy.spatial.transform import Rotation as R
>>> R.from_euler('zyz', [np.pi/2, np.pi/2, 0]).as_dcm()
array([[ 0.00000000e+00, -2.22044605e-16, 1.00000000e+00],
[ 1.00000000e+00, 2.22044605e-16, 0.00000000e+00],
[-2.22044605e-16, 1.00000000e+00, 2.22044605e-16]])
>>> R.from_euler('zyz', [0, np.pi/2, np.pi/2]).as_dcm()
array([[ 0.00000000e+00, -1.00000000e+00, 2.22044605e-16],
[ 2.22044605e-16, 2.22044605e-16, 1.00000000e+00],
[-1.00000000e+00, 0.00000000e+00, 2.22044605e-16]])
现在matlabs eul2rotm函数:
>> 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 进行测试。
解决方案
推荐阅读
- php - 如何在标题中使用php?
- html - 如何在 WordPress 小部件中嵌入外部内容?
- sql - MS Access 在 1 中合并 3 个查询
- java - 如何编写一个使用 json 格式的对象列表的 REST API 方法
- javascript - 如果单元格为空,表格不会显示
- ios - 如何使用 Swift 4 在 Xcode 中创建具有多个视图控制器的自定义模型实例?
- c++ - Cmake 在 ubuntu 18.04 上找不到本地版本的 opencv
- angular - 在移动视图的删除弹出窗口中清除会话
- java - 检查您的模块类路径是否存在缺失或冲突的依赖项
- c# - 使用 C# 将数据从一个 SQL Server 数据库动态插入到所有表的第二个数据库中