Numpy 和 Matlab 在数组乘法方面的区别
Difference between Numpy and Matlab in multiplication of arrays
我正在将一个程序从 Matlab 重写到 Python。
我意识到数组之间的乘法不同。这是一个例子:
A = [-1822.87977846-4375.93518777j
3675.88618351+3824.34290883j
971.68964707-2393.36758923j]
在 Matlab 中:
A*A'= 5.7282e+07
在Python中:
np.dot(A,A) = -21723405.178+39418085.0343j
如何在Numpy中获取A'*A的相同结果?
谢谢。
首先请记住,在 MATLAB 中,'
不同于 .'
。
在实值向量或矩阵上,两个运算符获得相似的结果。然而,在复杂的向量或矩阵上,它们会得到不同的结果。检查链接以找到两者的 matlab 示例。
在 MATLAB 中,您可以执行以下操作:
A.'*A
ans =
-2.172340517799748e+07 + 3.941808503424492e+07i
在Python那边
In [488]: A=np.array( [-1822.87977846-4375.93518777j ,
...: 3675.88618351+3824.34290883j,
...: 971.68964707-2393.36758923j])
In [489]: A
Out[489]:
array([-1822.87977846-4375.93518777j, 3675.88618351+3824.34290883j,
971.68964707-2393.36758923j])
In [490]: A.conj()
Out[490]:
array([-1822.87977846+4375.93518777j, 3675.88618351-3824.34290883j,
971.68964707+2393.36758923j])
In [491]: A.dot(A.conj())
Out[491]: (57281826.560119703+0j)
In [492]: A.dot(A)
Out[492]: (-21723405.177997477+39418085.034244925j)
In [497]: np.vdot(A,A)
Out[497]: (57281826.560119703+0j)
在 Octave 中,正如其他答案中指出的那样
>> A'*A
ans = 5.7282e+07
>> A.'*A
ans = -2.1723e+07 + 3.9418e+07i
>>
要获取A*A'
Matlab在Numpy中的运算,可以这样做:
np.dot(A,np.conj(A))
谢谢!
我正在将一个程序从 Matlab 重写到 Python。 我意识到数组之间的乘法不同。这是一个例子:
A = [-1822.87977846-4375.93518777j
3675.88618351+3824.34290883j
971.68964707-2393.36758923j]
在 Matlab 中:
A*A'= 5.7282e+07
在Python中:
np.dot(A,A) = -21723405.178+39418085.0343j
如何在Numpy中获取A'*A的相同结果?
谢谢。
首先请记住,在 MATLAB 中,'
不同于 .'
。
在实值向量或矩阵上,两个运算符获得相似的结果。然而,在复杂的向量或矩阵上,它们会得到不同的结果。检查链接以找到两者的 matlab 示例。
在 MATLAB 中,您可以执行以下操作:
A.'*A
ans =
-2.172340517799748e+07 + 3.941808503424492e+07i
在Python那边
In [488]: A=np.array( [-1822.87977846-4375.93518777j ,
...: 3675.88618351+3824.34290883j,
...: 971.68964707-2393.36758923j])
In [489]: A
Out[489]:
array([-1822.87977846-4375.93518777j, 3675.88618351+3824.34290883j,
971.68964707-2393.36758923j])
In [490]: A.conj()
Out[490]:
array([-1822.87977846+4375.93518777j, 3675.88618351-3824.34290883j,
971.68964707+2393.36758923j])
In [491]: A.dot(A.conj())
Out[491]: (57281826.560119703+0j)
In [492]: A.dot(A)
Out[492]: (-21723405.177997477+39418085.034244925j)
In [497]: np.vdot(A,A)
Out[497]: (57281826.560119703+0j)
在 Octave 中,正如其他答案中指出的那样
>> A'*A
ans = 5.7282e+07
>> A.'*A
ans = -2.1723e+07 + 3.9418e+07i
>>
要获取A*A'
Matlab在Numpy中的运算,可以这样做:
np.dot(A,np.conj(A))
谢谢!