【问题标题】:Rotating data by angle theta按角度 theta 旋转数据
【发布时间】:2021-07-19 10:14:33
【问题描述】:

可能是一个简单的问题,但假设您有想要逆时针旋转 90 度的 2d 法线数据,为此您可以使用 rotation matrices 并使用 theta = np.pi / 2 构造一个,然后将数据乘以您的旋转矩阵。这很好用,但是当我尝试将数据旋转 45 度 (np.pi / 4) 时,它不起作用。它似乎顺时针旋转了数据,但翻转角度的符号不会改变结果图。如何将数据逆时针旋转 45 度?

cov = np.array([[1, .7], [.7, 1]])
data = np.random.multivariate_normal(np.zeros(2), cov, size=10000)
theta = np.pi / 4
rot_matrix = np.array([[np.cos(theta), -np.sin(theta)],
                       [np.sin(theta), np.cos(theta)]])
data_rot = (rot_matrix @ data.T).T
fig, axes = plt.subplots(2)
axes[0].scatter(data[:, 0], data[:, 1])
axes[1].scatter(data_rot[:, 0], data_rot[:, 1])
fig.show()

产生图像:

(而我预计逆时针旋转 45 度会使数据看起来像一条垂直线)同时将 theta 更改为 np.pi / 2 会产生正确的图像:

【问题讨论】:

    标签: python matplotlib matrix rotation rotational-matrices


    【解决方案1】:

    您的旋转矩阵是正确的。是 matplotlib 的自动缩放使旋转看起来好像是错误的。尝试在fig.show()之前添加这些

    axes[0].set_aspect("equal")
    axes[1].set_aspect("equal")
    

    【讨论】:

    • 谢谢你,这让我看到了我想看的东西!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    相关资源
    最近更新 更多