web-dev-qa-db-fra.com

Calculer le rapport signal / bruit dans python scipy version 1.1

J'ai regardé autour de moi en ligne et il semble que la fonction de rapport signaltonoise à l'intérieur de scipy.stats est déconseillée et n'est pas disponible dans la version 1.1. Existe-t-il une autre méthode équivalente à l'intérieur du paquet scipy car je n'ai pas pu le trouver en ligne.

Et sinon scipy alors y a-t-il une autre bibliothèque recommandée pour de tels calculs?

5
sahu

Comme indiqué dans scipy issue # 609 on github , la fonction signaltonoise

[...] n'est pas utile, sauf pour la compatibilité descendante. La raison en est qu'il existe une fonction signal-bruit Matlab http://www.mathworks.com/help/signal/ref/snr.html ce qui signifie quelque chose de différent. Ce n'est pas bon, car scipy clone l'interface Matlab d'autres fonctions liées au signal, et cette incompatibilité n'a apparemment aucun avantage compensatoire.

Si vous avez besoin de cette fonction pour la compatibilité descendante, l'implémentation courte peut être trouvée dans le historique du dépôt scipy comme (reproduit ici sans les commentaires de documentation, licence ):

def signaltonoise(a, axis=0, ddof=0):
    a = np.asanyarray(a)
    m = a.mean(axis)
    sd = a.std(axis=axis, ddof=ddof)
    return np.where(sd == 0, 0, m/sd)
9
SleuthEye