NumPy:矩阵点产品与MATLAB不兼容

时间:2015-10-27 13:09:15

标签: python matlab numpy

我试图在NumPy中进行一些简单的计算。

但它突然给出了与MATLAB计算不同的结果。

以下是MATLAB示例:

load temp; % here are the source matrices located

resp = ang_stv' * tmp;
respC = resp.'; % this is our variable to compare with Python

cd(fileparts(mfilename('fullpath')));
save('arythm_test.mat');

在这里,我尝试在Python中计算相同的内容:

dump_data = sp.io.loadmat("arythm_test.mat")

tmp = dump_data["tmp"]
ang_stv = dump_data["ang_stv"]
ref_resp = dump_data["respC"]

our_resp = np.dot(ang_stv.swapaxes(0, 1), tmp).swapaxes(0, 1)

np.testing.assert_allclose(our_resp, ref_resp)

你不能告诉我,我做错了什么?以及如何应对它?

P.S。以下是temp.matarythm_test.mat

1 个答案:

答案 0 :(得分:1)

答案很简单:MATLAB中的.'运算符表示简单转置,'运算符表示复杂共轭转置。 Oy vey ......

tmp = dump_data["tmp"]
ang_stv = dump_data["ang_stv"]

print "tmp.shape", tmp.shape
print "ang_stv.shape", ang_stv.shape

ref_resp = dump_data["respC"]

our_resp = np.dot(np.conj(ang_stv.swapaxes(0, 1)), tmp).swapaxes(0, 1)