2016-07-14 106 views
-2

我有3個3X3矩陣存儲在numpy數組中。 我想獲得產品,計算旋轉矩陣。獲取3個矩陣的矩陣乘積

目前我在做什麼是 rotation_matrix = (a * b * c)但我不知道這是矩陣相乘正確的方式 - 我應該使用.dot我也試圖與rotation_matrix = pre_rotation.dot(result_pre_tilt).dot(post_rotation)

rotation_matrix = np.multiply(result_pre_tilt, pre_rotation, post_rotation)

a = np.array(
[[-0.25091924 0.   -0.  ] 
[-0.   -0.35485339 0.  ] 
[ 0.   0.   0.70710678]]) 

b = np.array(
[[ 0.10040533 -0.   0.  ] 
[ 0.   0.28953198 -0.  ] 
[ 0.   0.   0.31056766]]) 

c = np.array(
[[ 6.12323400e-17 0.00000000e+00 -1.00000000e+00] 
[ 0.00000000e+00 1.00000000e+00 0.00000000e+00] 
[ 1.00000000e+00 0.00000000e+00 6.12323400e-17]]) 
+0

http://docs.scipy.org/doc/numpy/reference/generated/numpy.multiply.html –

+1

這是否給出了正確的結果?一個例子可能有幫助。 「3D矩陣」可能不明確。形狀是3x3還是2x3x4?或者是其他東西。 – hpaulj

+0

*「存儲在numpy數組中的3D矩陣」*它們是什麼* type *,matrix或'ndarray'? (檢查'type(a)'。)如果它們是'矩陣'對象,那麼是的,'*'是矩陣乘法。如果它們是'numpy.ndarray'對象,那麼'*'是元素乘法。爲了在這種情況下進行矩陣乘法,使用'dot'方法:'rotation_matrix = a.dot(b).dot(c)'。 (你也可以在'matrix'對象中使用'dot'。) –

回答

0

您可以嘗試使用dot這樣的:

final= numpy.dot(tilt_matrix, (numpy.dot(rotation_matrix, original)) 

需要考慮的事項:

  1. numpy.dot是一個函數,而不是一個方法(未可以調用A.dot(B),呼叫np.dot(A, B)代替);
  2. 訂單很重要 - 如果您沒有得到正確的結果,請嘗試更改訂單。有時你需要首先翻譯然後旋轉,有時則需要翻譯。取決於每個案例;
  3. 對於2D矩陣,左矩陣列號必須與右矩陣行號的大小相同。
+1

如果'A'是一個numpy數組,則'A.dot(B)'與'np.dot(A,B)'相同。 – hpaulj