我试图在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.mat和arythm_test.mat
答案 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)