Numpy Racine Quadratique Moyenne (RMS) de lissage d'un signal

J'ai un signal de electromyographical de données que je suis censé (articles scientifiques' recommandation explicite) pour lisser à l'aide de RMS.

J'ai le texte suivant code de travail, la production de la sortie souhaitée, mais il est beaucoup plus lent que je pense que c'est possible.

#!/usr/bin/python
import numpy
def rms(interval, halfwindow):
    """ performs the moving-window smoothing of a signal using RMS """
    n = len(interval)
    rms_signal = numpy.zeros(n)
    for i in range(n):
        small_index = max(0, i - halfwindow)  # intended to avoid boundary effect
        big_index = min(n, i + halfwindow)    # intended to avoid boundary effect
        window_samples = interval[small_index:big_index]

        # here is the RMS of the window, being attributed to rms_signal 'i'th sample:
        rms_signal[i] = sqrt(sum([s**2 for s in window_samples])/len(window_samples))

    return rms_signal

J'ai vu certains deque et itertools suggestions quant à l'optimisation de déplacement de la fenêtre de boucles, et aussi convolve de numpy, mais je ne pouvais pas comprendre comment accomplir ce que je veux utiliser.

Aussi, je ne m'inquiète pas pour éviter les problèmes de délimitation plus, parce que je finis par avoir de grands tableaux et relativement petites fenêtres coulissantes.

Merci pour la lecture

Pouvez-vous le lien vers le papier? Je n'ai jamais entendu parler de lissage d'un signal par le calcul de la valeur RMS de la pointe sur une fenêtre mobile. En général, ce ne sera pas ressembler à une version lissée de l'origine du signal.
Le lissage de cette façon est suggéré parce qu'il est en corrélation avec le signal de puissance (énergie), ce qui pourrait être utilisée pour déduire les muscles à l'effort. Lien: isek-online.org/standards_emg.html "une Autre méthode acceptable de fournir de l'amplitude de l'information est le "Root Mean Square" ou RMS. Tout comme la moyenne mobile, cette quantité est définie pour un intervalle de temps spécifique (le déplacement de la fenêtre) T qui doit être indiqué." Il est le premier choix pour le lissage selon Noraxon livret (à code source fermé, propriété de mon entreprise) avec une fenêtre de temps entre 50 et 100 ms plus ou moins.
RMS d'un déplacement de la fenêtre est l'idée derrière les compteurs audio, trop.

OriginalL'auteur heltonbiker | 2011-11-23