Friday 2 February 2018

Simulação de um filtro médio m ponto de média


Resposta de freqüência do filtro médio de corrida 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 amostra de L é Como o filtro de média móvel é FIR, a resposta de freqüência reduz-se à soma finita. Pode usar a identidade muito útil para escrever a resposta de freqüência como onde nós deixamos ae menos jomega. N 0 e M L menos 1. Podemos estar interessados ​​na magnitude desta função, a fim de determinar quais frequências obtêm o filtro desatualizado e atenuados. 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 radianes por amostra. Observe que em todos os três casos, a resposta de freqüência possui uma característica de passagem baixa. Um componente constante (zero freqüência) na entrada passa pelo filtro desatualizado. Certas frequências mais altas, como pi 2, são completamente eliminadas pelo filtro. No entanto, se a intenção era projetar um filtro de passagem baixa, então não fizemos muito bem. Algumas das freqüências mais altas são atenuadas apenas por um fator de cerca de 110 (para a média móvel de 16 pontos) ou 13 (para a média móvel de quatro pontos). Nós podemos fazer muito melhor do que isso. O argumento acima foi criado pelo seguinte código Matlab: omega 0: pi400: pi H4 (14) (1-exp (-maome4)). (1-exp (-iomega)) H8 (18) (1-exp (- Iomega8)). (1-exp (-iomega)) H16 (116) (1-exp (-iomega16)). (1-exp (-iomega)) trama (omega, abs (H4) abs (H8) abs ( H16)) (0, pi, 0, 1) Copyright copy 2000- - Universidade da Califórnia, Berkeleymovingaverage v3.1 (Mar de 2008) MOVINGAVERAGE (X, F) suaviza os dados vetoriais X com uma caixa de caixa de tamanho 2F1, ie Por meio da média de cada elemento com os elementos F à sua direita e os elementos F à sua esquerda. Os elementos extremos também são promediados, mas com menos dados, obviamente. Deixando as bordas intactas. O método é muito rápido. MOVINGAVERAGE2 (X, M, N) suaviza a matriz X com uma caixa de caixa de tamanho (2M1) x (2N1), isto é, por meio da média de cada elemento com seus elementos circundantes que se encaixam na caixa mencionada centrada nele. Este também é muito rápido. Os elementos nas bordas também são calculados, mas os cantos ficam intactos. NANMOVINGAVERAGE (X, F) ou NANMOVINGAVERAGE (X, F, 1) aceitam elementos NaNs no vetor X, o último interpola também os elementos de NaNs envolvidos por elementos numéricos. NANMOVINGAVERAGE2 (X, M, N) ou NANMOVINGAVERAGE2 (X, M, N, 1) aceitam elementos NaN na matriz X, o último interpola também os elementos NaN rodeados por elementos numéricos. Novo preenchimento GAP simples: SMOOTHMAVERAGE (X, M, N, IND), esse suaviza apenas os elementos X (IND). Ignorando o NaNs. Isso pode ser usado para elimante GAPS em seus dados. Cada arquivo M tem um exemplo (veja a captura de tela). Verifique abaixo para ver as MUDANÇAS na v3.1. Nota: Olhando o código bidimensional de MOVINGAVERAGE2.M (e RUNMEAN para algumas dicas), alguém pode facilmente criar um MA N-dimensional. Você MATLAB 7.5 (R2007b) MATLAB Pesquisa Caminho Tags para este arquivo Faça o login para marcar arquivos. Faça login para adicionar um comentário ou classificação. Comentários e classificações (31) Gostaria de obter uma função de média móvel que lida com os valores de nan Carlos, eu gosto da sua função motionaverage, muito fácil de usar. Eu tenho dados que têm pequenas e grandes lacunas de tempo e eu não quero filtrar as lacunas. Eu poderia quebrar o vetor em cada intervalo, mas isso significaria trabalho. Qualquer sugestão sobre como lidar com algo assim. Muito útil me envie (principalmente para traçar) Queridos todos, Ix27m lidando com o preenchimento de lacunas nas medidas do tempo que o NaN deve ser preenchido com base na janela de tempo de vários dias. (Ou seja, a hora da vizinhança de vários dias). Por exemplo, um NaN às 5pm será substituído pelo valor médio na hora do bairro de vários dias. (Letx27s diz 4, 5 e 6pm do bairro 5 dias) Aqui está o osso da pergunta que eu gosto de lidar com: valores rand (1.1000) x27 falsoNaN chão (rand (1.300) x271000) valores (fakeNaN) NaN para i 1 : Comprimento (valores) n 24 i (1: 5) havenanindex find (isnan (values)) newvalues ​​nanmean (valores (havenanindex n-1: havingnanindexn1)):: Algo como isso:: Se você tem alguma solução ou conselho, por favor Sinta-se à vontade para me informar. Obrigado, Michael, oi, Carlos, envie-lhe um e-mail sobre as dificuldades na programação da cobertura móvel recursiva, você tem alguma ideia sobre esta questão, qualquer ajuda, por favor, graças ao avanço Edgar Guevara Codina Itx27s por pós-processamento adequado de sinais espectroscópicos, bastante útil. Carlos Adrian Vargas Aguilera Aslak comum, você está procurando por FLEAS em vez de BUGS. Mas, ok, USUÁRIOS: CUIDADO DE OUTLIERS e MEIOS GRANDES ao usar o método CUMSUM runmean Em vez disso use: NDNANFILTER :) Oi Carlos. Eu quis dizer isso como uma crítica construtiva. O argumento é que o erro é desnecessário, facilmente evitável, e não há vantagem de velocidade. Você está certo que, no exemplo específico, o erro não é muito grande (embora cometer o erro de compará-lo com o significado, em vez do desvio padrão). No entanto, só porque o erro é pequeno nesse caso não significa que seja para todas as séries. Experimente, por exemplo, isso: m3 n100000 xrandn (n, 1) x (1) 1e100 O problema é que o outlier dá origem a enormes erros em toda a série suavizada e não apenas dentro da janela. Esqueci a classificação para o exemplo de Aslakx27s (1 estrela): ele está comparando erros de precisões 1e-90.000000001 e 1e-13 eps. Sim, 10.000 vezes maior, mas para valores com 1000 significados, que é 1x27000,000x27000,000 maior do que o erro maior. Isso é um grande erro é isnx27t it Nice code but. O truque de cumsum para calcular as médias móveis pode resultar em erros desesperadamente grandes em certas condições: a média é muito diferente de zero ea série é muito longa. Herex27s um pequeno teste que ilustra o problema usando 3 abordagens diferentes para calcular a média móvel. Ele mostra que o método x27cumsumx27 possui erros que são mais de 10000 vezes maiores do que os erros do método do filtro. Não há diferença de velocidade real. M10 n300000 xrandn (n, 1) 1000 pensam, por exemplo, na pressão atmosférica. Tic snan (comprimento (x) - m1,1) para ii1: comprimento (s) s (ii) média (x (ii (0: m-1))) fim slowtimetoc tic c0cumsum (x) c (c (m1: Final) - c (1: end-m)) m cumsumtimetoc cumsumerrorsqrt (média ((cs) .2)) tic fltones (m, 1) m ffilter2 (flt, x, x27validx27) filtertimetoc filtererrorsqrt (média ((fs). 2)) slowtime 9.4732 cumsumtime 0.041549 cumsumerror 2.6456e-009 filtertime 0.033685 filtererror 1.4151e-013 Bem comentado Verifique os números de IO e os erros vectorizados rapidamente Carlos Adrin Vargas Aguilera Encontrou um erro inofensivo no MOVINGAVERAGE, linha 75: vírgula extra no aviso ja RK: De fato, essas são limitações dessa média móvel, mas o problema com as bordas é comum na teoria da filtragem. O autor nos fornece uma idéia e você BTW: esse preenchimento GAP é o que eu estava procurando. Obrigado Carlos Adrin Vargas Aguilera Olá Sam Agradecemos seus comentários. Eu não tive nenhum problema com o exemplo, você deve obter a captura de tela acima (sem os buracos), talvez seja sua versão do matlab, mas o código é realmente simples e deve funcionar com outros. Sobre o F, para obter uma média centrada em torno de um elemento, o número de elementos para a média deve ser ímpar, então 2F1 e, desse modo, F é a metade da largura da janela (verifique a Descrição acima). Semelhante ao m, n em 2D. Oi Carlos, muito obrigado por seu interessante código de matlab. Tenho uma dúvida sobre o tamanho da janela na média móvel 1D. O tamanho da janela é x272F1x27. Você pode me dizer o que o x27Fx27 representa. Também tentei obter a média móvel 2D para trabalhar com o exemplo fornecido, eu não poderia tentar que funcionasse. Filtro médio móvel (filtro MA) Carregando. O filtro de média móvel é um filtro Low Pass FIR (Finite Impulse Response) simples comumente usado para suavizar uma série de datasigns amostrados. Demora M amostras de entrada por vez e leva a média dessas M-samples 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 afiadas nos dados são tornadas cada vez mais contundentes. Isso implica que este filtro possui uma excelente resposta ao domínio do tempo, mas uma resposta de freqüência fraca. O filtro MA executa três funções importantes: 1) Demora os pontos de entrada M, calcula a média desses pontos M e produz um único ponto de saída 2) Devido aos cálculos de computação envolvidos. O filtro introduz uma quantidade definida de atraso 3) O filtro atua como um filtro de passagem baixa (com resposta de domínio de freqüência fraca e uma resposta de domínio de tempo bom). Código Matlab: O código matlab seguinte simula a resposta do domínio do tempo de um filtro M-point Moving Average e também faz a resposta de freqüência para vários comprimentos de filtro. Resposta de Domínio de Tempo: 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 próxima figura é a resposta de saída de um filtro de média móvel de 3 pontos. Pode deduzir-se da figura que o filtro de 3 pontos de média móvel não fez muito na filtragem do ruído. Aumentamos os toques de filtro para 51 pontos e podemos ver que o ruído na saída reduziu muito, o que é retratado na próxima figura. Aumentamos as torneiras até 101 e 501 e podemos observar que mesmo - embora o ruído seja quase zero, as transições são apagadas drasticamente (observe a inclinação de cada lado do sinal e compare-os com a transição ideal da parede de tijolos em Nossa contribuição). Resposta de frequência: a partir da resposta de freqüência, pode-se afirmar que o roll-off é muito lento ea atenuação da faixa de parada não é boa. Dada esta atenuação da faixa de parada, claramente, o filtro de média móvel não pode separar uma faixa de freqüências de outra. Como sabemos que um bom desempenho no domínio do tempo resulta em desempenho fraco 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 passagem baixa excepcionalmente ruim (a ação no domínio da freqüência) Links externos: livros recomendados: barra lateral primária

No comments:

Post a Comment