Um filtro digital introdutório Bem, abra o MicroModeler DSP e selecione um filtro digital na barra de ferramentas na parte superior e arraste-o para nosso aplicativo. Bem, escolha um filtro de média móvel porque é um dos tipos mais simples de filtros. Depois de largar o filtro, os ecrãs serão actualizados automaticamente. (Clique para iniciar o MicroModeler DSP em uma nova janela) Nós todos sabemos o que é uma média - adicionar os números juntos e dividir por quantos existem. Um filtro de média móvel faz exatamente isso. Ele armazena um histórico dos últimos N números e saídas sua média. Cada vez que um novo número entra, a média é efetivamente recalculada a partir das amostras armazenadas e um novo número é emitido. A resposta de freqüência de um filtro No canto superior direito, vemos o gráfico de Magnitude vs Frequência, ou quantas freqüências diferentes serão amplificadas ou reduzidas pelo filtro de média móvel. Como você poderia esperar, a média dos últimos N amostras irá aplicar algum tipo de suavização para o sinal, mantendo as baixas freqüências e removendo as altas freqüências. Podemos controlar o número de entradas anteriores, ou amostras que ele médio, ajustando o comprimento do filtro, N. Ajustando isso, podemos ver que temos algum controle básico sobre o qual as freqüências podem passar e quais são descartados. O interior de um filtro Se olharmos para a visão de estrutura, podemos ver como o interior de um filtro de média móvel pode parecer. O diagrama foi anotado para mostrar o que significam os diferentes símbolos. Os símbolos Z -1 significam atraso por uma amostra de tempo e os símbolos significam adicionar ou combinar os sinais. As setas significam multiplicar (pense amplificar, reduzir ou escalar) o sinal pela quantidade mostrada à direita da seta. Para uma média de 5 amostras, tomamos um quinto (0,2) da amostra mais recente, um quinto da segunda amostra mais recente e assim por diante. A cadeia de atrasos é chamada de linha de atraso com o sinal de entrada sendo adiado por um passo de tempo adicional à medida que você prossegue ao longo da linha de atraso. As setas também são chamadas de torneiras, então você poderia quase imaginá-los como sendo torneiras como a de sua pia da cozinha que são todos um quinto aberto. Você poderia imaginar o sinal fluindo da esquerda e sendo progressivamente adiado como ele se move ao longo da linha de atraso, em seguida, recombinados em diferentes forças através das torneiras para formar a saída. Também deve ser fácil ver que a saída do filtro será: Qual é o equivalente à média das últimas 5 amostras. Na prática, o código gerado pelo MicroModeler DSP usará truques para fazer isso de forma mais eficiente, de modo que somente as primeiras e últimas amostras precisam estar envolvidas, mas o diagrama é bom para fins ilustrativos. Se você pode entender isso, então você pode ter uma idéia do que é um filtro FIR. Um filtro FIR é idêntico ao filtro de média móvel, mas em vez de todas as resistências da torneira serem as mesmas, podem ser diferentes. Aqui temos um filtro de média móvel e um filtro FIR. Você pode ver que eles são estruturalmente os mesmos, a única diferença é a força das torneiras. A próxima seção apresentará os filtros de Resposta de Impulso Finito (FIR). Variando as forças de torneira, podemos criar perto de qualquer resposta de freqüência que queremos. O cientista e engenheiros guia para processamento de sinal digital Por Steven W. Smith, Ph. D. Como o nome indica, o filtro de média móvel opera fazendo a média de um número de pontos a partir do sinal de entrada para produzir cada ponto no sinal de saída. Na forma de equação, isto é escrito: Onde está o sinal de entrada, é o sinal de saída, e M é o número de pontos na média. Por exemplo, em um filtro de média móvel de 5 pontos, o ponto 80 no sinal de saída é dado por: Como alternativa, o grupo de pontos do sinal de entrada pode ser escolhido simetricamente em torno do ponto de saída: Isto corresponde à alteração da soma em Eq . 15-1 de: j 0 a M -1, para: j - (M -1) / 2 a (M -1) / 2. Por exemplo, em um filtro de média móvel de 10 pontos, o índice, j. Pode variar de 0 a 11 (média de um lado) ou -5 a 5 (média simétrica). A média simétrica requer que M seja um número ímpar. A programação é ligeiramente mais fácil com os pontos de apenas um lado no entanto, isso produz uma mudança relativa entre os sinais de entrada e saída. Você deve reconhecer que o filtro de média móvel é uma convolução usando um kernel de filtro muito simples. Por exemplo, um filtro de 5 pontos tem o kernel do filtro: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Ou seja, o filtro de média móvel é uma convolução Do sinal de entrada com um impulso retangular com uma área de um. Tabela 15-1 mostra um programa para implementar o filtro de média móvel. Resposta de Frequência do Filtro de Média Móvel e do Filtro FIR Compare a resposta em frequência do filtro de média móvel com a do filtro FIR regular. Defina os coeficientes do filtro FIR regular como uma seqüência de 1s escalado. O fator de escala é 1 / filterLength. Crie um objeto de sistema dsp. FIRFilter e defina seus coeficientes para 1/40. Para calcular a média móvel, crie um objeto dsp. MovingAverage System com uma janela deslizante de comprimento 40 para calcular a média móvel. Ambos os filtros têm os mesmos coeficientes. A entrada é Gaussian ruído branco com uma média de 0 e um desvio padrão de 1. Visualize a resposta de freqüência de ambos os filtros usando fvtool. As respostas de freqüência correspondem exatamente, o que prova que o filtro de média móvel é um caso especial do filtro FIR. Para comparação, veja a resposta de freqüência do filtro sem ruído. Compare a resposta de freqüência dos filtros com a do filtro ideal. Você pode ver que o lobo principal no passband não é liso e as ondinhas no stopband não são limitadas. A resposta de frequência dos filtros de média móvel não corresponde à resposta em frequência do filtro ideal. Para realizar um filtro FIR ideal, altere os coeficientes de filtro para um vetor que não seja uma seqüência de 1s escalado. A resposta de freqüência do filtro muda e tende a se aproximar da resposta do filtro ideal. Desenhe os coeficientes do filtro com base em especificações de filtro predefinidas. Por exemplo, projete um filtro FIR equiripple com uma freqüência de corte normalizada de 0,1, uma ondulação de banda passante de 0,5 e uma atenuação de banda de interrupção de 40 dB. Use fdesign. lowpass para definir as especificações do filtro eo método de design para projetar o filtro. A resposta dos filtros na banda de acesso é quase plana (semelhante à resposta ideal) e a banda de interrupção tem recursos limitados. MATLAB e Simulink são marcas registradas da The MathWorks, Inc. Consulte mathworks / marcas comerciais para obter uma lista de outras marcas comerciais de propriedade da The MathWorks, Inc. Outros produtos ou marcas são marcas comerciais ou marcas registradas de seus respectivos proprietários. Selecione seu Filtro Médio de Filtragem (Filtro MA) Carregando. 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 passagem baixa excepcionalmente ruim (a ação no domínio da freqüência) Links externos: Livros recomendados: Sidebar primário É possível implementar um Movendo a média em C sem a necessidade de uma janela de amostras Ive descobri que eu posso otimizar um pouco, escolhendo um tamanho de janela thats um poder de dois para permitir bit-shifting em vez de dividir, mas não precisando de um buffer seria bom. Existe uma maneira de expressar um novo resultado da média móvel apenas como uma função do antigo resultado e da nova amostra Definir um exemplo de média móvel, através de uma janela de 4 amostras para ser: Adicionar nova amostra e: Uma média móvel pode ser implementada recursivamente , Mas para um cálculo exato da média móvel você deve se lembrar da amostra de entrada mais antiga na soma (ou seja, o a no seu exemplo). Para um comprimento N média móvel você calcula: onde yn é o sinal de saída e xn é o sinal de entrada. Eq. (1) pode ser escrito recursivamente como Então você sempre precisa lembrar a amostra xn-N para calcular (2). Como indicado por Conrad Turner, você pode usar uma janela exponencial (infinitamente longa), que permite calcular a saída somente da saída anterior e da entrada atual: mas esta não é uma média móvel padrão (não ponderada), mas uma média exponencial Ponderada média móvel, onde as amostras mais no passado obter um peso menor, mas (pelo menos em teoria) você nunca esquecer nada (os pesos apenas ficar menor e menor para amostras no passado). Inicialize total 0, count0 (cada vez que vê um novo valor) Então uma entrada (scanf), uma add totalnewValue, um incremento (count), uma divide average (total / count) Esta seria uma média móvel sobre todas as entradas Para calcular a média Sobre apenas as 4 últimas entradas, exigiria 4 variáveis de entrada, talvez copiando cada entrada para uma variável de entrada mais antiga, calculando a nova média móvel como a soma das 4 variáveis de entrada, dividida por 4 (desvio para a direita 2 seria bom se todas as entradas fossem Positivo para fazer o cálculo médio
No comments:
Post a Comment