如何解决按角度 theta 旋转数据
可能是一个简单的问题,但假设您有想要逆时针旋转 90 度的二维法线数据,为此您可以使用 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[:,data_rot[:,1])
fig.show()
产生图像:
(而我预计逆时针旋转 45 度以使数据看起来像一条垂直线)同时将 theta 更改为 np.pi / 2
会产生以下正确图像:
解决方法
您的旋转矩阵是正确的。这是来自 matplotlib 的自动缩放看起来好像旋转是错误的。尝试在 fig.show()
axes[0].set_aspect("equal")
axes[1].set_aspect("equal")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。