2
如果我們有一個3 x 3
旋轉矩陣R
,它可以被用v
相乘,一個3 x N
陣列 - 的N
列向量的陣列 - 以產生新3 x N
陣列的旋轉矢量,如下所示:旋轉向量的陣列的
v_rotated = R.dot(v)
現在假設我們有一個N x M x 3
陣列,N
倍M
載體,其欲與N
不同3 x 3
旋轉矩陣(對於每個向量的「行」一個旋轉矩陣)旋轉。這對於循環來說很簡單,但是有一種更快,更緊湊(矢量化)的方式來完成它,例如,與numpy
的dot
或tensorproduct
? for循環實現
示例代碼:
from numpy import cos, sin, array, pi, linspace, random
# 100 different rotation matrices:
R = [array([[1, 0, 0], [0, cos(theta), -sin(theta)], [0, sin(theta), cos(theta)]]) for theta in linspace(0, pi, 100)]
# 100 x 200 random vectors:
v = random.random((100, 200, 3))
# rotate vectors in loop:
rotated_v = array([R_.dot(v_.T).T for R_, v_ in zip(R, v)])
分享,如果你已經實現了,這樣我們就可以回來看看就提出的任何解決方案糊塗的代碼? – Divakar
@Divakar增加了代碼(當然是玩具的例子) – sulkeh