Thursday 25 October 2018

Moving average filter frequency response matlab


Criado em quarta-feira, 08 de outubro de 2008 20:04 Atualizado em quinta-feira, 14 de março de 2017 01:29 Escrito por Batuhan Osmanoglu Hits: 38942 Moving Average Em Matlab Muitas vezes eu me encontro na necessidade de calcular a média dos dados que tenho para reduzir o ruído um pouco pouco. Eu escrevi funções de casal para fazer exatamente o que eu quero, mas matlabs construído em função de filtro funciona muito bem também. Aqui Ill escrever sobre 1D e 2D média dos dados. 1D filtro pode ser realizado usando a função de filtro. A função de filtro requer pelo menos três parâmetros de entrada: o coeficiente de numerador para o filtro (b), o coeficiente do denominador para o filtro (a) e os dados (X), é claro. Um filtro de média em execução pode ser definido simplesmente por: Para dados 2D, podemos usar a função Matlabs filter2. Para obter mais informações sobre como o filtro funciona, você pode digitar: Aqui está uma implementação rápida e suja de um filtro de média móvel 16 por 16. Primeiro precisamos definir o filtro. Uma vez que tudo o que queremos é a contribuição igual de todos os vizinhos, podemos apenas usar a função uns. Nós dividimos tudo com 256 (1616) desde que nós não queremos mudar o nível geral (amplitude) do sinal. Para aplicar o filtro podemos simplesmente dizer o seguinte Abaixo estão os resultados para a fase de um interferograma SAR. Neste caso, Range está no eixo Y e Azimuth é mapeado no eixo X. O filtro tinha 4 pixels de largura em Alcance e 16 pixels de largura em Azimute. Login SearchI precisa projetar um filtro de média móvel que tem uma freqüência de corte de 7,8 Hz. Eu usei filtros de média móvel antes, mas até onde estou ciente, o único parâmetro que pode ser alimentado é o número de pontos a serem calculados. Como isso pode se relacionar a uma freqüência de corte O inverso de 7,8 Hz é de 130 ms e Im trabalhando com dados que são amostrados a 1000 Hz. Isso implica que eu deveria estar usando um tamanho de janela de filtro média móvel de 130 amostras, ou há algo mais que estou faltando aqui pediu Jul 18 13 at 9:52 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 o propósito de suavização, mas se você usar o mesmo filtro de média móvel no domínio da freqüência para a separação de freqüência, o desempenho será pior. O filtro de média móvel (por vezes conhecido coloquialmente como um filtro de caixa) tem uma resposta de impulso retangular: Ou, afirmado de forma diferente: Lembrando que uma resposta de freqüência de sistemas de tempo discreto é Igual à transformada de Fourier de tempo discreto da sua resposta de impulso, podemos calculá-la da seguinte forma: O que mais interessou para o seu caso é a resposta de magnitude do filtro, H (ômega). Usando algumas manipulações simples, podemos obter isso em uma forma mais fácil de compreender: Isso pode não parecer mais fácil de entender. No entanto, devido à identidade Eulers. Lembre-se que: Portanto, podemos escrever o acima como: Como eu disse antes, o que você está realmente preocupado com a magnitude da resposta de freqüência. Assim, podemos tomar a magnitude do acima para simplificá-lo ainda mais: Nota: Nós somos capazes de soltar os termos exponenciais, porque eles não afetam a magnitude do resultado e 1 para todos os valores de ômega. Como xy xy para quaisquer dois números finitos x e y, podemos concluir que a presença de termos exponenciais não afeta a resposta de magnitude global (em vez disso, eles afetam a resposta de fase de sistemas). A função resultante dentro dos parênteses de magnitude é uma forma de um kernel de Dirichlet. Às vezes é chamado de função periódica sinc, porque se assemelha a função sinc um pouco na aparência, mas é periódica em vez disso. De qualquer forma, uma vez que a definição de freqüência de corte é um pouco underspecified (-3 dB ponto -6 dB ponto primeiro sidelobe nulo), você pode usar a equação acima para resolver o que você precisa. Especificamente, você pode fazer o seguinte: Definir H (omega) para o valor correspondente à resposta do filtro que você deseja na freqüência de corte. Defina ômega igual à frequência de corte. Para mapear uma freqüência de tempo contínuo para o domínio de tempo discreto, lembre-se que omega 2pi frac, onde fs é sua taxa de amostragem. Encontre o valor de N que lhe dá o melhor acordo entre os lados esquerdo e direito da equação. Isso deve ser o comprimento de sua média móvel. Se N é o comprimento da média móvel, então uma frequência de corte aproximada F (válida para N gt 2) na frequência normalizada Ff / fs é: O inverso disso é: Esta fórmula é assintoticamente correta para N grande e tem cerca de 2 para N2 e menos de 0,5 para N4. P. S. Depois de dois anos, aqui finalmente qual foi a abordagem seguida. O resultado foi baseado na aproximação do espectro de amplitude da MA em torno de f0 como uma parábola (série de 2ª ordem) de acordo com MA (Omega) aproximadamente 1 (frac-fra) Omega2 que pode ser feita mais exata perto do cruzamento zero de MA (Omega) Frac por multiplicação de Omega por um coeficiente de obtenção de MA (Omega) aprox. 10.907523 (frac-fra) Omega2 A solução de MA (Omega) - frac 0 dá os resultados acima, onde 2pi F Omega. Tudo o que acima se refere à freqüência de corte -3dB, o sujeito deste post. Às vezes, porém, é interessante obter um perfil de atenuação em banda de parada que é comparável com o de um filtro de baixa passagem IIR de 1ª ordem (LPF de um pólo) com uma determinada freqüência de corte -3dB (tal LPF é também chamado integrador com vazamento, Tendo um pólo não exatamente em DC, mas perto dele). De facto, tanto a MA como a 1ª ordem IIR LPF têm uma inclinação de -20dB / década na banda de paragem (é necessário um N maior do que o utilizado na figura, N32, para ver isto), mas enquanto que MA tem nulos especulares em Fk / N e um evelope 1 / f, o filtro IIR tem apenas um perfil 1 / f. Se se deseja obter um filtro MA com capacidades semelhantes de filtragem de ruído como este filtro IIR, e corresponder às frequências de corte 3dB para ser o mesmo, ao comparar 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 (isto é, a mesma atenuação de potência de ruído) como o filtro IIR as fórmulas podem ser modificadas da seguinte forma: Eu encontrei de volta o script Mathematica onde eu calculava o corte para vários filtros, incluindo o MA. O resultado foi baseado na aproximação do espectro MA em torno de f0 como uma parábola de acordo com MA (Omega) Sin (OmegaN / 2) / Sin (Omega / 2) Omega 2piF MA (F) aproximadamente N1 / 6F2 (N-N3) pi2. E derivando o cruzamento com 1 / sqrt a partir daí. Ndash Massimo Jan 17 at 2: 08Resposta de freqüência do filtro de média corrente A resposta de freqüência de um sistema LTI é o DTFT da resposta de impulso. A resposta de impulso de uma média móvel de L é uma média móvel. Resposta reduz à soma finita Podemos usar a identidade muito útil para escrever a resposta de freqüência como onde temos deixado ae menos jomega. N 0 e M L menos 1. Podemos estar interessados ​​na magnitude desta função para determinar quais freqüências passam pelo filtro sem atenuação e quais são atenuadas. Abaixo está um gráfico da magnitude desta função para L 4 (vermelho), 8 (verde) e 16 (azul). O eixo horizontal varia de zero a pi radianos por amostra. Observe que, em todos os três casos, a resposta de freqüência tem uma característica de passagem baixa. Uma componente constante (frequência zero) na entrada passa através do filtro sem ser atenuada. Certas frequências mais elevadas, como pi / 2, são completamente eliminadas pelo filtro. No entanto, se a intenção era projetar um filtro lowpass, então não temos feito muito bem. Algumas das frequências mais altas são atenuadas apenas por um factor de cerca de 1/10 (para a média móvel de 16 pontos) ou 1/3 (para a média móvel de quatro pontos). Podemos fazer muito melhor do que isso. O gráfico acima foi criado pelo seguinte código de Matlab: omega 0: pi / 400: pi H4 (1/4) (1-exp (-iomega4)) ./ (1-exp (-iomega)) H8 (1/8 ) (1-exp (-iomega8)) ./ (1-exp (-iomega)) lote (omega , Abs (H4) abs (H8) abs (H16)) eixo (0, pi, 0, 1) Copyright copy 2000- - Universidade da Califórnia, BerkeleyMoving Average Filter (MA filter) Loading. O filtro de média móvel é um simples filtro Low Pass FIR (Finite Impulse Response) comumente usado para suavizar uma matriz de dados / sinal amostrados. Ele toma M amostras de entrada de cada vez e pegue a média dessas M-amostras e produz um único ponto de saída. É uma estrutura de LPF (Low Pass Filter) muito simples que é útil para cientistas e engenheiros para filtrar o componente ruidoso indesejado dos dados pretendidos. À medida que o comprimento do filtro aumenta (o parâmetro M) a suavidade da saída aumenta, enquanto que as transições nítidas nos dados são feitas cada vez mais sem corte. Isto implica que este filtro tem excelente resposta no domínio do tempo mas uma resposta de frequência pobre. O filtro MA executa três funções importantes: 1) Toma M pontos de entrada, calcula a média desses pontos M e produz um único ponto de saída 2) Devido à computação / cálculos envolvidos. O filtro introduz uma quantidade definida de atraso 3) O filtro age como um Filtro de Passagem Baixa (com fraca resposta de domínio de freqüência e uma boa resposta de domínio de tempo). Código Matlab: O código matlab seguinte simula a resposta no domínio do tempo de um filtro M-point Moving Average e também traça a resposta de freqüência para vários comprimentos de filtro. Time Domain Response: No primeiro gráfico, temos a entrada que está entrando no filtro de média móvel. A entrada é barulhenta e nosso objetivo é reduzir o ruído. A figura a seguir é a resposta de saída de um filtro de média móvel de 3 pontos. Pode-se deduzir da figura que o filtro de média móvel de 3 pontos não fez muito na filtragem do ruído. Aumentamos os toques do filtro para 51 pontos e podemos ver que o ruído na saída reduziu muito, o que é mostrado na próxima figura. Nós aumentamos as derivações para 101 e 501 e podemos observar que mesmo que o ruído seja quase zero, as transições são drasticamente ditas (observe a inclinação em ambos os lados do sinal e compare-as com a transição ideal da parede de tijolo em Nossa entrada). Resposta de Freqüência: A partir da resposta de freqüência pode-se afirmar que o roll-off é muito lento ea atenuação de banda de parada não é boa. Dada esta atenuação de banda de parada, claramente, o filtro de média móvel não pode separar uma banda de freqüências de outra. Como sabemos que um bom desempenho no domínio do tempo resulta em mau desempenho no domínio da freqüência, e vice-versa. Em suma, a média móvel é um filtro de suavização excepcionalmente bom (a ação no domínio do tempo), mas um filtro de passa-baixa excepcionalmente ruim (a ação no domínio da freqüência) Links externos: Livros recomendados: Primary SidebarI necessidade de projetar um movimento Médio que tem uma freqüência de corte de 7,8 Hz. Eu usei filtros de média móvel antes, mas até onde estou ciente, o único parâmetro que pode ser alimentado é o número de pontos a serem calculados. Como isso pode se relacionar a uma freqüência de corte O inverso de 7,8 Hz é de 130 ms e Im trabalhando com dados que são amostrados a 1000 Hz. Isso implica que eu deveria estar usando um tamanho de janela de filtro média móvel de 130 amostras, ou há algo mais que estou faltando aqui pediu Jul 18 13 at 9:52 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 o propósito de suavização, mas se você usar o mesmo filtro de média móvel no domínio da freqüência para a separação de freqüência, o desempenho será pior. O filtro de média móvel (por vezes conhecido coloquialmente como um filtro de caixa) tem uma resposta de impulso retangular: Ou, afirmado de forma diferente: Lembrando que uma resposta de freqüência de sistemas de tempo discreto é Igual à transformada de Fourier de tempo discreto da sua resposta de impulso, podemos calculá-la da seguinte forma: O que mais interessou para o seu caso é a resposta de magnitude do filtro, H (ômega). Usando algumas manipulações simples, podemos obter isso em uma forma mais fácil de compreender: Isso pode não parecer mais fácil de entender. No entanto, devido à identidade Eulers. Lembre-se que: Portanto, podemos escrever o acima como: Como eu disse antes, o que você está realmente preocupado com a magnitude da resposta de freqüência. Assim, podemos tomar a magnitude do acima para simplificá-lo ainda mais: Nota: Nós somos capazes de soltar os termos exponenciais, porque eles não afetam a magnitude do resultado e 1 para todos os valores de ômega. Como xy xy para quaisquer dois números finitos x e y, podemos concluir que a presença de termos exponenciais não afeta a resposta de magnitude global (em vez disso, eles afetam a resposta de fase de sistemas). A função resultante dentro dos parênteses de magnitude é uma forma de um kernel de Dirichlet. Às vezes é chamado de função periódica sinc, porque se assemelha a função sinc um pouco na aparência, mas é periódica em vez disso. De qualquer forma, uma vez que a definição de freqüência de corte é um pouco underspecified (-3 dB ponto -6 dB ponto primeiro sidelobe nulo), você pode usar a equação acima para resolver o que você precisa. Especificamente, você pode fazer o seguinte: Definir H (omega) para o valor correspondente à resposta do filtro que você deseja na freqüência de corte. Defina ômega igual à frequência de corte. Para mapear uma freqüência de tempo contínuo para o domínio de tempo discreto, lembre-se que omega 2pi frac, onde fs é sua taxa de amostragem. Encontre o valor de N que lhe dá o melhor acordo entre os lados esquerdo e direito da equação. Isso deve ser o comprimento de sua média móvel. Se N é o comprimento da média móvel, então uma frequência de corte aproximada F (válida para N gt 2) na frequência normalizada Ff / fs é: O inverso disso é: Esta fórmula é assintoticamente correta para N grande e tem cerca de 2 para N2 e menos de 0,5 para N4. P. S. Depois de dois anos, aqui finalmente qual foi a abordagem seguida. O resultado foi baseado na aproximação do espectro de amplitude da MA em torno de f0 como uma parábola (série de 2ª ordem) de acordo com MA (Omega) aproximadamente 1 (frac-fra) Omega2 que pode ser feita mais exata perto do cruzamento zero de MA (Omega) Frac por multiplicação de Omega por um coeficiente de obtenção de MA (Omega) aprox. 10.907523 (frac-fra) Omega2 A solução de MA (Omega) - frac 0 dá os resultados acima, onde 2pi F Omega. Tudo o que acima se refere à freqüência de corte -3dB, o sujeito deste post. Às vezes, porém, é interessante obter um perfil de atenuação em banda de parada que é comparável com o de um filtro de baixa passagem IIR de 1ª ordem (LPF de um pólo) com uma determinada freqüência de corte -3dB (tal LPF é também chamado integrador com vazamento, Tendo um pólo não exatamente em DC, mas perto dele). De facto, tanto a MA como a 1ª ordem IIR LPF têm uma inclinação de -20dB / década na banda de paragem (é necessário um N maior do que o utilizado na figura, N32, para ver isto), mas enquanto que MA tem nulos especulares em Fk / N e um evelope 1 / f, o filtro IIR tem apenas um perfil 1 / f. Se se deseja obter um filtro MA com capacidades semelhantes de filtragem de ruído como este filtro IIR, e corresponder às frequências de corte 3dB para ser o mesmo, ao comparar 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 (isto é, a mesma atenuação de potência de ruído) como o filtro IIR as fórmulas podem ser modificadas da seguinte forma: Eu encontrei de volta o script Mathematica onde eu calculava o corte para vários filtros, incluindo o MA. O resultado foi baseado na aproximação do espectro MA em torno de f0 como uma parábola de acordo com MA (Omega) Sin (OmegaN / 2) / Sin (Omega / 2) Omega 2piF MA (F) aproximadamente N1 / 6F2 (N-N3) pi2. E derivando o cruzamento com 1 / sqrt a partir daí. Ndash Massimo Jan 17 em 2:08

No comments:

Post a Comment