Quelle est la fréquence de coupure d'un filtre à moyenne mobile?

18

J'ai besoin de concevoir un filtre à moyenne mobile qui a une fréquence de coupure de 7,8 Hz. J'ai déjà utilisé des filtres à moyenne mobile, mais pour autant que je sache, le seul paramètre qui peut être introduit est le nombre de points à faire la moyenne ... Comment cela peut-il être lié à une fréquence de coupure?

L'inverse de 7,8 Hz est de ~ 130 ms, et je travaille avec des données échantillonnées à 1000 Hz. Cela signifie-t-il que je devrais utiliser une taille de fenêtre de filtre moyenne mobile de 130 échantillons, ou y a-t-il autre chose qui me manque ici?

CaptainProg
la source
Vous devez d'abord définir votre compréhension de la «coupure». Si c'est la dernière fréquence au-dessus (en dessous) à laquelle la réponse d'un filtre est nulle, alors la réponse serait "aucune", car le noyau d'un filtre à moyenne mobile a un support fini et les ondelettes finies se transforment en images de Fourier infinies.
mbaitoff
Le filtre à moyenne mobile est le filtre utilisé dans le domaine temporel pour éliminer le bruit ajouté et également à des fins de lissage, mais si vous utilisez le même filtre à moyenne mobile dans le domaine de fréquence pour la séparation de fréquence, les performances seront pires ...... donc dans ce cas, utilisez des filtres de domaine de fréquence

Réponses:

27

Le filtre à moyenne mobile (parfois appelé familièrement filtre à wagon couvert ) a une réponse impulsionnelle rectangulaire:

h[n]=1Nk=0N1δ[nk]

Ou, autrement dit:

h[n]={1N,0n<N0,otherwise

En se rappelant que la réponse en fréquence d'un système à temps discret est égale à la transformée de Fourier à temps discret de sa réponse impulsionnelle, nous pouvons la calculer comme suit:

H(ω)=n=x[n]ejωn=1Nn=0N1ejωn

Pour simplifier cela, nous pouvons utiliser la formule connue pour la somme des premiers termes d'une série géométriqueN :

n=0N1ejωn=1ejωN1ejω

Ce qui nous intéresse le plus dans votre cas, c'est la réponse en amplitude du filtre,. En utilisant quelques manipulations simples, nous pouvons obtenir cela sous une forme plus facile à comprendre:|H(ω)|

H(ω)=1Nn=0N1ejωn=1N1ejωN1ejω=1NejωN/2ejω/2ejωN/2ejωN/2ejω/2ejω/2

Cela peut ne pas sembler plus facile à comprendre. Cependant, en raison de l'identité d' Euler , rappelez-vous que:

sin(ω)=ejωejωj2

Par conséquent, nous pouvons écrire ce qui précède comme:

H(ω)=1NejωN/2ejω/2j2sin(ωN2)j2sin(ω2)=1NejωN/2ejω/2sin(ωN2)sin(ω2)

Comme je l'ai déjà dit, ce qui vous préoccupe vraiment, c'est l'ampleur de la réponse en fréquence. Donc, nous pouvons prendre l'ampleur de ce qui précède pour simplifier davantage:

|H(ω)|=1N|sin(ωN2)sin(ω2)|

Remarque: Nous pouvons supprimer les termes exponentiels car ils n'affectent pas l'ampleur du résultat; pour toutes les valeurs de . Depuispour deux nombres complexes finis et , nous pouvons conclure que la présence des termes exponentiels n'affecte pas la réponse d'amplitude globale (au lieu de cela, ils affectent la réponse de phase du système).ω | x y | = | x | | y | x y|ejω|=1ω|xy|=|x||y|xy

La fonction résultante à l'intérieur des crochets de magnitude est une forme de noyau Dirichlet . Elle est parfois appelée fonction sinc périodique , car elle ressemble quelque peu à la fonction sinc en apparence, mais elle est plutôt périodique.

Quoi qu'il en soit, comme la définition de la fréquence de coupure est quelque peu sous-spécifiée (point -3 dB? Point -6 dB? Premier lobe latéral nul?), Vous pouvez utiliser l'équation ci-dessus pour résoudre tout ce dont vous avez besoin. Plus précisément, vous pouvez effectuer les opérations suivantes:

  1. Ensembleà la valeur correspondant à la réponse du filtre que vous souhaitez à la fréquence de coupure.|H(ω)|

  2. Définissez égal à la fréquence de coupure. Pour mapper une fréquence à temps continu au domaine à temps discret, n'oubliez pas que , où est votre fréquence d'échantillonnage.ω = 2 π fω fsω=2πffsfs

  3. Trouvez la valeur de qui vous donne le meilleur accord entre les côtés gauche et droit de l'équation. Cela devrait être la longueur de votre moyenne mobile.N

Jason R
la source
À mon avis, c'est un «oui»? Autant que je sache, 130 échantillons semblent correspondre à N avec ω = 7,8, mais je ne suis pas mathématicien.
CaptainProg
@CaptainProg: Vous seul pouvez dire avec certitude; Je ne sais pas ce que vous vouliez que la réponse en amplitude soit à la fréquence de coupure.
Jason R
1
Pourriez-vous définir ce que sont n et N? Un exemple avec une fréquence d'échantillonnage donnée serait également très utile. Cela peut sembler simple, mais cette question est le meilleur résultat pour la "fréquence de coupure moyenne mobile", donc je suis sûr que de nombreux autres téléspectateurs seront déconnectés des calculs derrière les filtres.
FvD
@FvD est l'indice d'échantillon pour le signal , tel qu'il est généralement utilisé pour les signaux à temps discret. est défini dans la première équation ci-dessus. Si j'en ai l'occasion, je peux ajouter un exemple, mais je soupçonne que quiconque choisit de concevoir un filtre pour répondre à une fréquence de coupure particulière peut suivre le calcul. x [ n ] Nnx[n]N
Jason R
10

Si est la longueur de la moyenne mobile, alors une fréquence de coupure approximative (valable pour ) en fréquence normalisée est:FN N>=2F=f / fsFcoN>=2F=f/fs

Fco=0.442947N21

L'inverse de ceci est

N=0.196202+Fco2Fco

Cette formule est asymptotiquement correcte pour les grands N et a une erreur d'environ 2% pour N = 2 et inférieure à 0,5% pour N> = 4.

PS: Après deux ans, voici enfin quelle a été l'approche suivie. Le résultat était basé sur l'approximation du spectre d'amplitude MA autour de tant que parabole (Série de 2ème ordre) selonf=0

MA(Ω)=Sin(ΩN/2)Sin(Ω/2)

MA(Ω)1+(124N224)Ω2

qui peut être rendu plus exact près du passage par zéro de en multipliant par un coefficientMA(Ω)22Ω

α=0.95264

obtention MA(Ω)1+0.907523(124N224)Ω2

La solution de donne les résultats ci-dessus, où .2πFco=ΩcoMA(Ω)22=02πFco=Ωco

Tout ce qui précède concerne la fréquence de coupure de -3 dB, le sujet de cet article.

Parfois, bien qu'il soit intéressant d'obtenir un profil d'atténuation en bande d'arrêt qui soit comparable à celui d'un filtre passe-bas IIR de premier ordre (LPF unipolaire) avec une fréquence de coupure de -3 dB donnée (un tel LPF est également appelé intégrateur qui fuit, ayant un pôle pas exactement à DC mais près de lui).

relations entre un filtre MA (FIR, N-1 zéros) et un LPF IIR unipolaire

En fait, le MA et le LPF IIR de premier ordre ont une pente de -20 dB / décade dans la bande d'arrêt (on a besoin d'un N plus grand que celui utilisé dans la figure, N = 32, pour le voir), mais alors que MA a des valeurs nulles spectrales à et une enveloppe , le filtre IIR n'a qu'un profil .1 / fF=k/N1/f1/f

HIIR=1Exp(Ωco)1Exp(Ωco)Exp(jΩ)

Si l'on veut obtenir un filtre MA avec des capacités de filtrage du bruit similaires à ce filtre IIR et que les fréquences de coupure 3dB sont identiques, en comparant les deux spectres, il se rendrait compte que l'ondulation de la bande d'arrêt du filtre MA finit ~ 3 dB en dessous de celui du filtre IIR.

Afin d'obtenir la même ondulation de bande d'arrêt (c'est-à-dire la même atténuation de puissance de bruit) que le filtre IIR, les formules peuvent être modifiées comme suit:

Fco,IIR=0.32N21

N=0.1024+Fco,IIR2Fco,IIR

Massimo
la source
J'ai changé votre formule au format latex. Veuillez vérifier et confirmer que les deux sont corrects. Merci.
lennon310
J'ai ajouté une dérivation de cette approximation ici dsp.stackexchange.com/a/28186/15347
Olli Niemitalo
2
Pour autant que je m'en souvienne, j'ai dérivé cette formule avec des préoccupations pragmatiques à l'esprit, au moyen de méthodes numériques (soit NSolve dans Mathematica ou quelque chose de similaire dans Matlab), qui devraient être asymptotiquement correctes pour les grands N. Le nombre que vous avez donné est d'environ 3% de réduction , donc je ne sais pas quoi dire.
Massimo
1
@Massimo, nous avons fait beaucoup de travail sur cette question et sur d'autres approximations dans l'autre question. Si jamais vous avez besoin de plus de décimales, c'est votre nombre magique: 0.442946470689452340308369
Olli Niemitalo
1
J'ai retrouvé le script Mathematica où j'ai calculé la coupure pour plusieurs filtres, dont celui de MA. Le résultat était basé sur l'approximation du spectre MA autour de f = 0 comme une parabole selon ; ; . Et dériver le croisement avec partir de là. O m e g a = 2 * π * F M A ( F ) N + une / 6 * F 2( N - N 3 ) π 2 /MA(Ω)=Sin(ΩN/2)/Sin(Ω/2)Omega=2πFMA(F)N+1/6F2(NN3)π21/2
Massimo