Moving average dsp


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, num 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 a média móvel filterpute Média Móvel Usando Objetos do Sistema Crie um objeto dsp. MovingAverage System para calcular a média móvel de 10 pontos do sinal de streaming. Use um objeto de sistema dsp. MatFileReader para ler dados do arquivo MAT do acelerômetro. Ver a média móvel de saída no âmbito do tempo. Os objetos System indexam automaticamente os dados em quadros. Escolha um tamanho de quadro de 714 amostras. Existem 7140 amostras ou 10 quadros de dados em cada coluna do arquivo MAT. Cada ciclo de iteração calcula a média móvel de 1 frame de dados. O loop de processamento é muito simples. Os objetos de sistema controlam a indexação de dados e estados automaticamente. 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 paísUm 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 resistências de toque, podemos criar perto de qualquer resposta de freqüência que desejamos. Documentação Objeto Salvamento e Carregamento saveObjectImpl define quais propriedades e valores de estado são salvos em um arquivo MAT quando você chamar salvar nesse objeto. Se você não definir um método saveObjectImpl para sua classe de objeto System, somente propriedades públicas e propriedades com o atributo DiscreteState serão salvas. Salve o estado de um objeto somente se o objeto estiver bloqueado. Quando você carrega o objeto salvo, o objeto carrega nesse estado bloqueado. Neste objeto System, os coeficientes de filtro são salvos se o objeto estiver bloqueado. LoadObjectImpl define qual propriedade de objeto do sistema e valores de estado são carregados quando você carrega um arquivo MAT. LoadObjectImpl deve corresponder ao seu saveObjectImpl para garantir que todas as propriedades e dados salvos sejam carregados. Observação: Você deve definir o Access protegido para este método. Objeto de sistema Uso no MATLAB Este exemplo usa o objeto System para remover o ruído de uma seqüência de pulso ruidosa. O comprimento do filtro de média móvel é de 30 amostras. Se você estiver usando o dspdemo. MovingAverageFilter predefinido. Substitua esse nome por MovingAverageFilter no construtor de classe, por exemplo, movingAverageFilter dspdemo. MovingAverageFilter (WindowLength, 30). Métodos de personalização do Simulink Você precisa definir mais alguns métodos para poder usar o objeto System em um bloco do sistema MATLAB do Simulink. Estes métodos não são necessários se utilizar o objecto de sistema apenas no MATLAB. GetOutputSizeImpl retorna os tamanhos de cada porta de saída. Para objetos System com uma entrada e uma saída e onde você deseja que os tamanhos de entrada e saída sejam os mesmos, você não precisa implementar esse método. No caso de MovingAverageFilter. Há uma entrada e saída eo tamanho de cada um é o mesmo. Portanto, remova esse método da definição de classe de MovingAverageFilter. GetDiscreteStateSpecificationImpl retorna o tamanho, tipo de dados e complexidade de uma propriedade. Esta propriedade deve ser uma propriedade de estado discreto. Você deve definir esse método se seu objeto System tiver propriedades de estado discreto e for usado no bloco do sistema MATLAB. Neste exemplo, o método é usado para definir a propriedade State. Selecionar sua CountryDocumentation dsp. MovingAverage Objeto de sistema Descrição O objeto dsp. MovingAverage Systemx2122 calcula a média móvel do sinal de entrada ao longo de cada canal, independentemente ao longo do tempo. O objeto usa o método de janela deslizante ou o método de ponderação exponencial para calcular a média móvel. No método de janela deslizante, uma janela de comprimento especificado é movida sobre os dados, amostra por amostra ea média é calculada sobre os dados na janela. No método de ponderação exponencial, o objeto multiplica as amostras de dados com um conjunto de fatores de ponderação. A média é calculada somando os dados ponderados. Para obter mais detalhes sobre esses métodos, consulte Algoritmos. O objeto aceita entradas multicanais, ou seja, entradas de tamanho m-por-n, onde m 8805 1 e n gt 1. O objeto também aceita entradas de tamanho variável. Uma vez que o objeto está bloqueado, você pode alterar o tamanho de cada canal de entrada. No entanto, o número de canais não pode mudar. Este objeto suporta a geração de código C e C. Para calcular a média móvel da entrada: Crie um objeto dsp. MovingAverage e defina as propriedades do objeto. Etapa de chamada para calcular a média móvel. Observação: Como alternativa, em vez de usar o método step para executar a operação definida pelo objeto System, você pode chamar o objeto com argumentos, como se fosse uma função. Por exemplo, y step (obj, x) e y obj (x) executam operações equivalentes. Construção movAvg dsp. MovingAverage retorna um objeto de média móvel, movAvg. Usando as propriedades padrão. MovAvg dsp. MovingAverage (Len) define a propriedade WindowLength como Len. MovAvg dsp. MovingAverage (Name, Value) especifica propriedades adicionais usando pares Name, Value. As propriedades não especificadas têm valores padrão. Selecione seu país

Comments