Qual é a frequência de corte de um filtro de média móvel?

18

Preciso projetar um filtro de média móvel que tenha uma frequência de corte de 7,8 Hz. Eu já usei filtros de média móvel antes, mas, até onde sei, o único parâmetro que pode ser alimentado é o número de pontos a serem calculados em média ... Como isso pode estar relacionado a uma frequência de corte?

O inverso de 7,8 Hz é ~ 130 ms e estou trabalhando com dados que são amostrados em 1000 Hz. Isso implica que eu deveria estar usando um tamanho médio de janela de filtro em movimento de 130 amostras, ou há algo mais que estou perdendo aqui?

CaptainProg
fonte
Você deve primeiro definir seu entendimento de "corte". Se for a última frequência acima (abaixo) que a resposta de um filtro é zero, a resposta seria "nenhuma", pois o núcleo de um filtro de média móvel tem um suporte finito e as wavelets finitas se transformam em infinitas imagens de quatro camadas.
mbaitoff
O filtro de média móvel é o filtro usado no domínio do tempo para remover o ruído adicionado e também para fins de suavização, mas se você usar o mesmo filtro de média móvel no domínio da frequência para a separação de frequências, o desempenho será pior ... nesse caso, use filtros de domínio de frequência

Respostas:

27

O filtro de média móvel (às vezes conhecido coloquialmente como filtro de vagão ) tem uma resposta retangular ao impulso:

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

Ou, dito diferentemente:

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

Lembrando que a resposta de frequência de um sistema de tempo discreto é igual à transformação de Fourier em tempo discreto de sua resposta de impulso, podemos calculá-lo da seguinte forma:

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

Para simplificar isso, podemos usar a fórmula conhecida para a soma dos primeiros termos de uma série geométricaN :

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

O que mais interessa para o seu caso é a resposta de magnitude do filtro,. Usando algumas manipulações simples, podemos obtê-lo de uma forma mais fácil de compreender:|H(ω)|

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

Isso pode não parecer mais fácil de entender. No entanto, devido à identidade de Euler , lembre-se de que:

sin(ω)=ejωejωj2

Portanto, podemos escrever o acima como:

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

Como afirmei antes, você está realmente preocupado com a magnitude da resposta em frequência. Portanto, podemos aproveitar a magnitude do exposto para simplificá-lo ainda mais:

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

Nota: podemos descartar os termos exponenciais porque eles não afetam a magnitude do resultado; para todos os valores de . Desdepara quaisquer dois números complexos finitos e , podemos concluir que a presença dos termos exponenciais não afeta a resposta de magnitude geral (em vez disso, eles afetam a resposta de fase do sistema).|ejω|=1ω|xy|=|x||y|xy

A função resultante dentro dos parênteses de magnitude é uma forma de um núcleo Dirichlet . Às vezes, é chamada de função sinc periódica , porque se assemelha à função sinc um pouco na aparência, mas é periódica.

De qualquer forma, como a definição de frequência de corte é um pouco subespecificada (-3 dB ponto? -6 dB ponto? Primeiro sidelobe nulo?), Você pode usar a equação acima para resolver o que precisar. Especificamente, você pode fazer o seguinte:

  1. Definirpara o valor correspondente à resposta do filtro que você deseja na frequência de corte.|H(ω)|

  2. Defina igual à frequência de corte. Para mapear uma frequência de tempo contínuo para o domínio de tempo discreto, lembre-se de que , em que é a sua taxa de amostragem.ωω=2πffsfs

  3. Encontre o valor de que oferece a melhor concordância entre os lados esquerdo e direito da equação. Essa deve ser a duração da sua média móvel.N

Jason R
fonte
Pela minha opinião, isso é um 'sim'? Até onde eu sei, 130 amostras parecem encaixar N com ω = 7,8, mas não sou matemático.
CaptainProg
@ CaptainProg: Só você pode dizer com certeza; Não sei ao certo o que você queria que a resposta de magnitude tivesse na frequência de corte.
Jason R
1
Você poderia definir o que n e N são? Um exemplo com uma determinada frequência de amostragem também seria muito útil. Isso pode parecer simples, mas essa questão é o resultado principal da "frequência de corte média móvel", por isso estou certo de que haverá muitos outros espectadores que perderam o contato com a matemática por trás dos filtros.
FVD
@FvD é o índice de amostra para o sinal , como é normalmente usado para sinais de tempo discreto. é definido na primeira equação acima. Se eu tiver uma chance, posso adicionar um exemplo, mas suspeito que qualquer pessoa que esteja escolhendo projetar um filtro para atender a uma frequência de corte específica pode seguir a matemática. nx[n]N
Jason R
10

Se é o comprimento da média móvel, uma frequência de corte aproximada (válida para ) na frequência normalizada é:NFcoN>=2F=f/fs

Fco=0.442947N21

O inverso disso é

N=0.196202+Fco2Fco

Essa fórmula é assintoticamente correta para N grande e possui cerca de 2% de erro para N = 2 e menos de 0,5% para N> = 4.

PS: Depois de dois anos, aqui finalmente, qual foi a abordagem seguida. O resultado foi baseado na aproximação do espectro de amplitude MA em torno de como uma parábola (Série de 2ª ordem) de acordo comf=0

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

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

que pode ser mais exato perto do cruzamento zero de multiplicando por um coeficienteMA(Ω)22Ω

α=0.95264

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

A solução de fornece os resultados acima, onde .MA(Ω)22=02πFco=Ωco

Tudo acima se refere à frequência de corte de -3dB, o assunto deste post.

Às vezes, embora seja interessante obter um perfil de atenuação na banda de parada que seja comparável ao de um filtro passa-baixa IIR de 1ª ordem (LPF de polo único) com uma determinada frequência de corte de -3dB (esse LPF também é chamado de integrador com vazamento, ter um poste não exatamente em DC, mas perto dele).

relações entre um filtro MA (FIR, N-1 zeros) e um LPR IIR de 1 polo

De fato, o MA e o IIR LPF de 1ª ordem têm uma inclinação de -20dB / década na banda de parada (é necessário um N maior que o usado na figura, N = 32, para ver isso), mas enquanto o MA possui nulos espectrais em e um envelope , o filtro IIR possui apenas um perfil .F=k/N1/f1/f

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

Se alguém quiser obter um filtro MA com recursos de filtragem de ruído semelhantes aos do filtro IIR e combinar as frequências de corte 3dB iguais, comparando os dois espectros, ele perceberá que a ondulação da banda de parada do filtro MA acaba ~ 3dB abaixo do filtro IIR.

Para obter a mesma ondulação de banda de parada (ou seja, a mesma atenuação de potência de ruído) que o filtro IIR, as fórmulas podem ser modificadas da seguinte maneira:

Fco,IIR=0.32N21

N=0.1024+Fco,IIR2Fco,IIR

Massimo
fonte
Mudei sua fórmula para o formato de látex. Verifique e confirme se os dois estão corretos. Obrigado.
Lennon310
Eu adicionei uma derivação dessa aproximação aqui dsp.stackexchange.com/a/28186/15347
Olli Niemitalo
2
Tanto quanto me lembro, derivei essa fórmula com preocupações pragmáticas em mente, por meio de métodos numéricos (NSolve no Mathematica ou algo semelhante no Matlab), que devem ser assintoticamente corretos para N. grande. O número que você forneceu é cerca de 3% de desconto , então não tenho certeza do que dizer.
Massimo
1
@ Massimo, fizemos muito trabalho nessa e em outras aproximações na outra questão. Se você precisar de mais lugares decimais este é o número mágico: ,442946470689452340308369
Olli Niemitalo
1
Encontrei novamente o script do Mathematica, onde calculei o corte de vários filtros, incluindo o MA. O resultado foi baseado na aproximação do espectro MA em torno de f = 0 como uma parábola de acordo com ; ; . E derivando a travessia com de lá. ó m e g um = 2 * π * F M A ( F ) N + 1 / 6 * F 2 * ( N - N 3 ) * π 2 1MA(Ω)=Sin(ΩN/2)/Sin(Ω/2)Omega=2πFMA(F)N+1/6F2(NN3)π21/2
Massimo