2016-07-14 3 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

* «3D-матрицы, хранящиеся в массивах numpy» * Что * тип *, они, 'matrix' или' ndarray'? (Проверьте 'type (a)'.) Если они являются объектами 'matrix', то да,' * 'является матричным умножением. Если они являются объектами 'numpy.ndarray', то' * 'является элементарным умножением. Чтобы сделать матричное умножение в этом случае, используйте метод 'dot':' rotation_matrix = a.dot (b) .dot (c) '. (Вы также можете использовать 'dot' с объектами' matrix'.) –

ответ

0

Вы можете попробовать использовать dot как это:

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

Вещи рассмотреть:

  1. numpy.dot является функцией, а не метод (не можно назвать A.dot(B), вызовите np.dot(A, B) вместо этого);
  2. Порядок: если вы не получаете правильный результат, попробуйте изменить порядок. Иногда вам нужно сначала перевести, а затем повернуть, иногда наоборот. Зависит от каждого случая;
  3. Номер столбца левой матрицы должен быть того же размера, что и номер строки правой матрицы, для двумерных матриц.
+1

Если 'A' является массивом numpy,' A.dot (B) 'является таким же, как' np.dot (A, B) '. – hpaulj

 Смежные вопросы

  • Нет связанных вопросов^_^