for i in range(mats.shape[0]): r = Rotation.from_dcm(mats[i]) eulers.append(r.as_euler(seq, degrees=True))
时间: 2024-03-01 07:50:37 浏览: 157
如果你使用的是 Scipy 1.7.3 版本,则无法使用 `from_dcm` 方法创建旋转对象,因为该方法在 Scipy 1.7.3 版本中已被删除。替代方法是使用 `from_matrix` 方法,该方法与 `from_dcm` 方法类似,只需将方向余弦矩阵作为参数传递即可。下面是将 `from_dcm` 方法替换为 `from_matrix` 方法的示例代码:
```python
import numpy as np
from scipy.spatial.transform import Rotation
# 创建旋转矩阵数组
mats = np.array([
[[1, 0, 0], [0, 1, 0], [0, 0, 1]],
[[0, -1, 0], [1, 0, 0], [0, 0, 1]],
[[-1, 0, 0], [0, -1, 0], [0, 0, 1]]
])
# 创建欧拉角序列
seq = 'ZYX'
# 使用 from_matrix 方法创建旋转对象,并将欧拉角添加到列表中
eulers = []
for m in mats:
r = Rotation.from_matrix(m)
eulers.append(r.as_euler(seq, degrees=True))
# 打印欧拉角
print(eulers)
```
在这个例子中,我们创建了一个旋转矩阵数组 `mats`,其中有三个旋转矩阵。然后,我们使用 `from_matrix` 方法将每个旋转矩阵转换为一个旋转对象 `r`,并使用 `as_euler` 方法将其转换为欧拉角,并将欧拉角添加到列表 `eulers` 中。最后,我们打印欧拉角列表。
阅读全文