У меня есть следующая матрица m.Выполнение операции питания на матрице в Python
m =
0 0 0 0
0 1 2 3
0 2 4 6
0 3 6 9
Я пытаюсь выполнить эквивалентную операцию MATLAB с использованием Python.
new_m = w.^m
т.е. преобразование т в follwing матрицы:
new_m =
1 1 1 1
1 w^1 w^2 w^3
1 w^2 w^4 w^6
1 w^3 w^6 w^9
В настоящее время мой Python подход заключается в следующем:
N=4
w=cmath.exp(2*pi) # Here w = 535.491655525+0j
row=list(range(N)) # In this case row = [0, 1, 2, 3]
#Create the matrix and perform operation on it
m = [[0]*N for i in range(N)]
for x in range(1,q):
for entry in row:
m[x][entry]=entry*r # <--- This gives me give me the above matrix m
# This was my attempt to perform the new_m=w.^m operation
for x in range(0,q):
for entry in row:
element=M[x][entry]
new_m[x][entry]=w**element # <--- This should give me the correct new_m matrix described above
Мой код Python дает мне следующий результат:
[ [ 1.0000e+00+0.j 1.0000e+00+0.j 1.0000e+00+0.j 1.0000e+00+0.j]
[ 1.0000e+00+0.j 5.3549e+02+0.j 2.8675e+05+0.j 1.5355e+08+0.j]
[ 1.0000e+00+0.j 2.8675e+05+0.j 8.2226e+10+0.j 2.3579e+16+0.j]
[ 1.0000e+00+0.j 1.5355e+08+0.j 2.3579e+16+0.j 3.6205e+24+0.j]]
Но i е я выполнить эту операцию в MATLAB он дает мне этот ответ на new_m = w.^m
операции:
new_m =
1.0e+24 *
0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 3.6205
Я не уверен, почему эти ответы отличаются и где я Wong в том, что я предполагаю, что это ошибка в моем питона код , Любые советы или предложения были бы оценены!
Примечание: Я также попытался с помощью следующей команды после моего первого набора для петель (с использованием м матрицы):
new_m = w**m
Но это произвело ошибку:
TypeError: unsupported operand type(s) for ** or pow(): 'complex' and 'list'
Во-первых - если вы выполняете работу atrix на Python, для чего-либо, кроме понимания того, как работает langauge, вы должны использовать Numpy http://www.numpy.org/. Поддержка операций такого рода выходит за пределы box с массивами Numpy - и это будет примерно в 10000 раз быстрее, чем та же самая операция, выполняемая с помощью внешних Python для циклов. – jsbueno