저는 Matlab 스크립트를 파이썬으로 변환하고 있습니다. 10 ** - 4 순서로 다른 결과를 얻고 있습니다.Precision Matlab and Python (numpy)
f_mean=f_mean+nanmean(f);
f = f - nanmean(f);
f_t = gradient(f);
f_tt = gradient(f_t);
if n_loop==1
theta = atan2(sum(f.*f_tt), sum(f.^2));
end
theta = -2.2011167e+03
파이썬 : 매트랩
f_mean = f_mean + np.nanmean(vel)
vel = vel - np.nanmean(vel)
firstDerivative = np.gradient(vel)
secondDerivative = np.gradient(firstDerivative)
if numberLoop == 1:
theta = np.arctan2(np.sum(vel * secondDerivative),
np.sum([vel**2]))
제 비록
및 secondDerivative 파이썬과 매트랩 동일한 결과를 얻을 수는 f_mean 약간 다르다 : -0.0066412 (matlab에) 및 -0.0066414 (파이썬); 그래서 theta : -0.4126186 (M)과 -0.4124718 (P). 그것은 작은 차이지만, 결국 내 스크립트에서 다른 결과로 연결됩니다.
나는이 차이점에 대해 물어 보는 사람들이 있지만 표준 값에 대해서는 항상 알고 있지만 평균값은 고려하지 않는다는 것을 알고 있습니다. 왜 그런지 궁금합니다.
[최소한의 완전하고 검증 가능한 예] (https://stackoverflow.com/help/mcve)를 제공하면 도움이됩니다. 위 코드를 보았지만 입력 배열'f_mean'을 제공하지 않았으므로 코드를 실행하여 결과를 재현 할 수 없습니다. –
파이썬 코드에서'f_mean'은 초기에 numpy 배열입니까? 그렇다면'f_mean.dtype'은 무엇입니까? –
것은 배열이 백만 개가 넘는 거대합니다. 하지만 vel은 [-0.042 -0.028 -0.038 -0.013 -0.026 -0.031 -0.0560 ...]으로 시작합니다. –