Qual è la frequenza di taglio di un filtro a media mobile?


18

Devo progettare un filtro a media mobile con una frequenza di taglio di 7,8 Hz. Ho già usato filtri a media mobile prima, ma per quanto ne so, l'unico parametro che può essere inserito è il numero di punti da calcolare in media ... Come può essere correlato a una frequenza di taglio?

L'inverso di 7,8 Hz è ~ 130 ms e sto lavorando con dati campionati a 1000 Hz. Ciò implica che dovrei usare una dimensione media della finestra del filtro mobile di 130 campioni o c'è qualcos'altro che mi manca qui?


Dovresti prima definire la tua comprensione del "cut-off". Se è l'ultima frequenza sopra (sotto) che la risposta di un filtro è zero, allora la risposta sarebbe "nessuna", poiché il kernel di un filtro a media mobile ha un supporto finito e le onde finite si trasformano in infinite immagini di Fourier.
mbaitoff,

Il filtro della media mobile è il filtro utilizzato nel dominio del tempo per rimuovere il rumore aggiunto e anche per scopi di smussamento, ma se si utilizza lo stesso filtro della media mobile nel dominio della frequenza per la separazione delle frequenze, le prestazioni saranno peggiori ...... quindi in tal caso, utilizzare i filtri del dominio della frequenza

Risposte:


27

Il filtro a media mobile (talvolta noto colloquialmente come filtro boxcar ) ha una risposta all'impulso rettangolare:

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

O, diversamente indicato:

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

Ricordando che la risposta in frequenza di un sistema a tempo discreto è uguale alla trasformata di Fourier a tempo discreto della sua risposta all'impulso, possiamo calcolarla come segue:

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

Per semplificare questo, possiamo usare la formula nota per la somma dei primi termini di una serie geometricaN :

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

Ciò che ci interessa di più per il tuo caso è la risposta di grandezza del filtro, . Usando un paio di semplici manipolazioni, possiamo ottenerlo in una forma più facile da comprendere:|H(ω)|

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

Questo potrebbe non sembrare più facile da capire. Tuttavia, a causa dell'identità di Eulero , ricorda che:

sin(ω)=ejωejωj2

Pertanto, possiamo scrivere quanto sopra come:

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

Come ho detto prima, ciò di cui sei veramente preoccupato è l'entità della risposta in frequenza. Quindi, possiamo prendere la grandezza di quanto sopra per semplificarlo ulteriormente:

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

Nota: siamo in grado di eliminare i termini esponenziali perché non influiscono sull'entità del risultato; per tutti i valori di ω . Dal | x y | = | x | | y | per ogni due numeri complessi finiti x ed y , possiamo concludere che la presenza dei termini esponenziali non influiscono sulla risposta grandezza globale (invece, influenzano la risposta di fase del sistema).|ejω|=1ω|xy|=|x||y|xy

La funzione risultante all'interno delle parentesi magnitudo è una forma di un kernel Dirichlet . Talvolta viene chiamata una funzione sinc periodica , perché in qualche modo assomiglia alla funzione sinc , ma è invece periodica.

Ad ogni modo, poiché la definizione della frequenza di taglio è in qualche modo poco specificata (-3 dB punto? -6 dB punto? Primo sidelobe null?), Puoi usare l'equazione sopra per risolvere qualunque cosa tu abbia bisogno. In particolare, è possibile effettuare le seguenti operazioni:

  1. Imposta |H(ω)|al valore corrispondente alla risposta del filtro che si desidera alla frequenza di taglio.

  2. Impostare uguale alla frequenza di taglio. Per mappare una frequenza di tempo continuo al dominio del tempo discreto, ricordare che ω = 2 π fω , dovefsè la frequenza di campionamento.ω=2πffsfs

  3. Trova il valore di che ti dà il miglior accordo tra i lati sinistro e destro dell'equazione. Dovrebbe essere la lunghezza della tua media mobile.N


Secondo i miei calcoli, è un "sì"? Per quanto ne so, 130 campioni sembrano adattarsi a N con ω = 7,8, ma non sono un matematico.
CaptainProg,

@CaptainProg: Solo tu puoi dirlo con certezza; Non sono sicuro di cosa volevi che la risposta di magnitudo fosse alla frequenza di taglio.
Jason R,

1
Potresti definire cosa sono n e N? Un esempio con una determinata frequenza di campionamento sarebbe anche molto utile. Può sembrare semplice, ma questa domanda è il risultato migliore per la "frequenza di taglio media mobile", quindi sono sicuro che ci saranno molti altri spettatori che non hanno toccato la matematica dietro i filtri.
FvD,

nx[n]N is defined in the first equation above. If I get a chance I can add an example, but I suspect that anyone who is choosing to design a filter to meet a particular cutoff frequency can follow the math.
Jason R

10

If N is the length of the moving average, then an approximate cut-off frequency Fco (valid for N>=2) in normalized frequency F=f/fs is:

Fco=0.442947N21

The inverse of this is

N=0.196202+Fco2Fco

This formula is asymptotically correct for large N, and has about 2% error for N=2, and less than 0.5% for N>=4.

P.S.: After two years, here finally what was the approach followed. The result was based on approximating the MA amplitude spectrum around f=0 as a parabola (2nd order Series) according to

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

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

which can be made more exact near the zero crossing of MA(Ω)22 by multiplying Ω by a coefficient

α=0.95264

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

The solution of MA(Ω)22=0 gives the results above, where 2πFco=Ωco.

All of the above relates to the -3dB cut off frequency, the subject of this post.

Sometimes though it is interesting to obtain an attenuation profile in stop-band which is comparable with that of a 1st order IIR Low Pass Filter (single pole LPF) with a given -3dB cut off frequency (such a LPF is also called leaky integrator, having a pole not exactly at DC but near to it).

relations between a MA filter (FIR, N-1 zeros) and a 1-pole IIR LPF

In fact both the MA and the 1st order IIR LPF have -20dB/decade slope in the stop band (one needs a larger N than the one used in the figure, N=32, to see this), but whereas MA has spectral nulls at F=k/N and a 1/f evelope, the IIR filter only has a 1/f profile.

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

If one wants to obtain an MA filter with similar noise filtering capabilities as this IIR filter, and matches the 3dB cut off frequencies to be the same, upon comparing the two spectra, he would realize that the stop band ripple of the MA filter ends up ~3dB below that of the IIR filter.

In order to get the same stop-band ripple (i.e. same noise power attenuation) as the IIR filter the formulas can be modified as follows:

Fco,IIR=0.32N21

N=0.1024+Fco,IIR2Fco,IIR


I changed your formula to the latex format. Please double check and confirm both of them are correct. Thanks.
lennon310

I added a derivation of this approximation here dsp.stackexchange.com/a/28186/15347
Olli Niemitalo

2
As far as i remember i derived this formula with pragmatic concerns in mind, by means of numerical methods (either NSolve in Mathematica or something similar in Matlab), which should be asymptotically correct for large N. The number you gave is about 3% off, so i am not sure what to say.
Massimo

1
@Massimo we did a lot of work on this and other approximations in the other question. If you ever need more decimal places this is your magic number: 0.442946470689452340308369
Olli Niemitalo

1
I found back the Mathematica script where i calculated the cut off for several filters, including the MA one. The result was based on approximating the MA spectrum around f=0 as a parabola according to MA(Ω)=Sin(ΩN/2)/Sin(Ω/2) ; Omega=2πF; MA(F)N+1/6F2(NN3)π2 . And deriving the crossing with 1/2 from there.
Massimo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.