Ich konvertiere ein Matlab-Skript nach Python und erhalte verschiedene Ergebnisse in der Reihenfolge 10 ** - 4.Precision Matlab und Python (numpy)
in Matlab:
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
In Python:
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]))
Obwohl erste und secondDerivative die gleichen Ergebnisse in Python und Matlab geben, f_mean ist etwas anders: -0,0066412 (Matlab) und -0,0066414 (Python); und so Theta: -0.4126186 (M) und -0.4124718 (P). Es ist ein kleiner Unterschied, führt aber am Ende zu unterschiedlichen Ergebnissen in meinen Skripten.
Ich weiß, dass einige Leute nach diesem Unterschied gefragt haben, aber immer in Bezug auf Std, die ich bekomme, aber nicht in Bezug auf Mittelwerte. Ich frage mich, warum es so ist.
Es wäre hilfreich, wenn Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) bereitstellen könnten. Sie haben den Code angezeigt, der großartig ist, aber Sie haben das Eingabearray 'f_mean' nicht bereitgestellt, sodass wir den Code nicht ausführen können, um das Ergebnis zu reproduzieren. –
Im Python-Code ist 'f_mean' anfangs ein numpy Array? Wenn ja, was ist 'f_mean.dtype'? –
Sache ist das Array ist riesig, über eine Million Daten. aber vel würde mit [-0.042 -0.028 -0.038 -0.013 -0.026 -0.031 -0.0560 ...] beginnen. –