Moving Average Cic Filter
Como outros já mencionaram, você deve considerar um filtro IIR (resposta de impulso infinito) em vez do filtro FIR (filtro de resposta finito) que você está usando agora. Há mais, mas à primeira vista os filtros FIR são implementados como convoluções explícitas e filtros IIR com equações. O filtro IIR particular que eu uso muito em microcontroladores é um filtro passa-baixa de um único pólo. Este é o equivalente digital de um simples filtro analógico R-C. Para a maioria dos aplicativos, estes terão melhores características do que o filtro de caixa que você está usando. A maioria dos usos de um filtro de caixa que eu encontrei são resultado de alguém que não presta atenção na classe de processamento de sinal digital, não como resultado de precisar de suas características particulares. Se você quiser apenas atenuar as altas freqüências que você conhece são ruídos, um filtro passa-baixa de um único pólo é melhor. A melhor maneira de implementar um digitalmente em um microcontrolador é geralmente: FILT lt-- FILT FF (NEW-FILT) FILT é um pedaço de estado persistente. Esta é a única variável persistente que você precisa para calcular este filtro. NOVO é o novo valor que o filtro está sendo atualizado com esta iteração. FF é a fração do filtro. Que ajusta o peso do filtro. Olhe para este algoritmo e veja que para FF 0 o filtro é infinitamente pesado, já que a saída nunca muda. Para FF 1, realmente não há nenhum filtro, já que a saída apenas segue a entrada. Os valores úteis estão no meio. Em sistemas pequenos, você escolhe FF para ser 12 N, de modo que o multiplica por FF pode ser realizado como uma mudança direta por N bits. Por exemplo, FF pode ser 116 e multiplicar por FF, portanto, uma mudança direta de 4 bits. Caso contrário, este filtro precisa apenas de uma subtração e de um som, embora os números geralmente sejam mais amplos do que o valor de entrada (mais na precisão numérica em uma seção separada abaixo). Normalmente, tomo as leituras do AD significativamente mais rápidas do que são necessárias e aplico dois desses filtros em cascata. Este é o equivalente digital de dois filtros R-C em série e atenua 12 dBoctave acima da frequência de rolagem. No entanto, para as leituras de AD, geralmente é mais relevante olhar para o filtro no domínio do tempo, considerando sua resposta passo a passo. Isso indica o quão rápido o sistema verá uma mudança quando a coisa que você está medindo muda. Para facilitar a concepção desses filtros (o que significa apenas escolher FF e decidir quantos deles entrar em cascata), uso o meu programa FILTBITS. Você especifica o número de bits de mudança para cada FF na série de filtros em cascata, e ele calcula a resposta de passo e outros valores. Na verdade, eu costumo executar isso através do meu script wrapper PLOTFILT. Isso executa FILTBITS, que faz um arquivo CSV e, em seguida, traça o arquivo CSV. Por exemplo, aqui é o resultado do PLOTFILT 4 4: os dois parâmetros para PLOTFILT significam que haverá dois filtros em cascata do tipo descrito acima. Os valores de 4 indicam o número de bits de mudança para realizar o multiplicar pelo FF. Os dois valores FF são, portanto, 116 neste caso. O rastreamento vermelho é a resposta do passo da unidade, e é o principal aspecto a ser observado. Por exemplo, isso indica que, se a entrada muda instantaneamente, a saída do filtro combinado será fixada em 90 do novo valor em 60 iterações. Se você se preocupa com 95 horas de colonização, então você precisa esperar cerca de 73 iterações e por 50 horas de reposição apenas 26 iterações. O traço verde mostra a saída de um único pico de amplitude total. Isso dá uma idéia da supressão de ruído aleatória. Parece que nenhuma amostra única causará mais de 2,5 mudanças na saída. O traço azul é dar uma sensação subjetiva do que este filtro faz com o ruído branco. Este não é um teste rigoroso, uma vez que não há garantia de que exatamente o conteúdo era dos números aleatórios escolhidos como entrada de ruído branco para esta corrida de PLOTFILT. É só dar-lhe uma sensação áspera de quanto ele será esmagado e quão suave é. PLOTFILT, talvez FILTBITS, e muitas outras coisas úteis, especialmente para o desenvolvimento de firmware PIC, estão disponíveis na versão do software PIC Development Tools na minha página de downloads de software. Adicionado sobre a precisão numérica que vejo a partir dos comentários e agora uma nova resposta que tem interesse em discutir o número de bits necessários para implementar este filtro. Observe que o Multiply by FF criará novos bits do Log 2 (FF) abaixo do ponto binário. Em sistemas pequenos, FF é geralmente escolhido para ser 12 N, de modo que esse multiplicação seja efetivamente realizado por uma mudança direta de N bits. FILT é, portanto, geralmente um inteiro de ponto fixo. Observe que isso não altera nenhuma das matemáticas do ponto de vista dos processadores. Por exemplo, se você estiver filtrando as leituras de AD de 10 bit e N 4 (FF 116), então você precisa de 4 bits de fração abaixo das leituras de AD inteiras de 10 bits. A maioria dos processadores, você estará fazendo operações inteiras de 16 bits devido às leituras AD de 10 bits. Nesse caso, você ainda pode fazer exatamente as mesmas operações de inteiro de 16 bits, mas comece com as leituras de AD esquerda deslocadas em 4 bits. O processador não conhece a diferença e não precisa. Fazer matemática em inteiros inteiros de 16 bits funciona se você considera que eles são 12.4 pontos fixos ou verdadeiros inteiros de 16 bits (16.0 ponto fixo). Em geral, você precisa adicionar N bits cada pólo de filtro se você não deseja adicionar ruído devido à representação numérica. No exemplo acima, o segundo filtro de dois teria que ter 1044 18 bits para não perder informações. Na prática, em uma máquina de 8 bits que significa que você use valores de 24 bits. Tecnicamente, apenas o segundo pólo de dois precisaria do valor mais amplo, mas, para a simplicidade do firmware, costumo usar a mesma representação e, assim, o mesmo código, para todos os pólos de um filtro. Geralmente eu escrevo uma sub-rotina ou macro para executar uma operação de polio de filtro, depois aplique isso a cada pólo. Se uma sub-rotina ou macro depende se os ciclos ou a memória do programa são mais importantes nesse projeto específico. De qualquer forma, eu uso algum estado de rascunho para passar NOVO no subroutinemacro, que atualiza FILT, mas também carrega isso no mesmo estado de rascunho NOVO estava dentro. Isso facilita a aplicação de vários pólos desde que o FILT atualizado de um pólo é o NOVO Do próximo. Quando uma sub-rotina, é útil ter um ponteiro apontar para FILT no caminho, que é atualizado logo após FILT no caminho de saída. Dessa forma, a sub-rotina atua automaticamente em filtros consecutivos na memória se for chamado várias vezes. Com uma macro, você não precisa de um ponteiro, pois você passa no endereço para operar em cada iteração. Exemplos de código Aqui está um exemplo de uma macro como descrito acima para um PIC 18: E aqui está uma macro semelhante para um PIC 24 ou dsPIC 30 ou 33: Ambos esses exemplos são implementados como macros usando o meu pré-processador PIC assembler. Que é mais capaz do que qualquer uma das instalações de macro incorporadas. Clabacchio: Outro problema que eu deveria ter mencionado é a implementação do firmware. Você pode escrever uma sub-rotina de filtro passa-baixa de um único pó uma vez, depois aplicá-la várias vezes. Na verdade, geralmente escrevo uma sub-rotina para levar um ponteiro na memória para o estado do filtro, então, avance o ponteiro para que possa ser chamado sucessivamente de forma fácil para realizar filtros multipolar. Ndash Olin Lathrop 20 de abril 12 às 15:03 1. Muito obrigado por suas respostas - todos eles. Eu decidi usar este Filtro IIR, mas este Filtro não é usado como um Filtro LowPass Padrão, pois eu preciso usar os Valores de Contador médios e compará-los para detectar Mudanças em um determinado intervalo. Uma vez que estes valores são de dimensões muito diferentes dependendo do hardware que eu queria tomar uma média para poder reagir automaticamente a essas mudanças específicas de hardware. Ndash sensslen 21 de maio 12 às 12:06 Se você pode viver com a restrição de um poder de dois itens a média (ou seja, 2,4,8,16,32 etc.), então a divisão pode ser feita com facilidade e eficiência em uma Micro de baixo desempenho sem divisão dedicada porque pode ser feito como uma mudança de bit. Cada turno para a direita é um poder de dois, por exemplo: O OP pensou que ele tinha dois problemas, dividindo-se em um PIC16 e memória para o buffer de anel. Esta resposta mostra que a divisão não é difícil. É certo que não aborda o problema da memória, mas o sistema SE permite respostas parciais, e os usuários podem tirar algo de cada resposta por si mesmos, ou mesmo editar e combinar as respostas de outros. Uma vez que algumas das outras respostas exigem uma operação de divisão, elas são igualmente incompletas, uma vez que não mostram como conseguir isso eficientemente em um PIC16. Ndash Martin 20 de abril 12 às 13:01 Há uma resposta para um verdadeiro filtro de média móvel (aka filtro de caixa) com menos requisitos de memória, se você não se importa com o downsampling. É chamado de filtro integrador-pente em cascata (CIC). A idéia é que você tenha um integrador que você tome diferenças em um período de tempo, e o dispositivo chave de economia de memória é que, por downsampling, você não precisa armazenar todos os valores do integrador. Ele pode ser implementado usando o seguinte pseudocódigo: seu comprimento médio móvel efetivo é decimationFactorstatesize, mas você só precisa manter em torno de amostras estadisticas. Obviamente, você pode obter um melhor desempenho se o seu estadista e decimationFactor forem poderes de 2, de modo que os operadores de divisão e restante sejam substituídos por turnos e máscaras-es. Postscript: Eu concordo com a Olin que você sempre deve considerar filtros IIR simples antes de um filtro de média móvel. Se você não precisar da freqüência-nulos de um filtro de caixa, um filtro passa-baixa de 1 pólo ou 2 pólos provavelmente funcionará bem. Por outro lado, se você estiver filtrando para fins de decimação (tomando uma entrada de alta taxa de amostragem e avaliando-a para uso por um processo de baixa taxa), um filtro CIC pode ser exatamente o que você está procurando. (Especialmente se você pode usar statesize1 e evitar o buffer de toque completamente com apenas um único valor de integrador anterior) Há uma análise aprofundada da matemática por trás do uso do filtro IIR de primeira ordem que Olin Lathrop já descreveu na troca de pilha de processamento de sinal digital (Inclui muitas imagens bonitas.) A equação para este filtro IIR é: Isto pode ser implementado usando apenas números inteiros e sem divisão usando o seguinte código (pode precisar de alguma depuração como eu estava digitando de memória.) Este filtro se aproxima de uma média móvel de As últimas K amostras, definindo o valor de alfa para 1K. Faça isso no código anterior, definindo BITS para LOG2 (K), ou seja, para K 16, defina BITS para 4, para K 4, defina BITS para 2, etc. (Verifique o código listado aqui assim que eu receber uma mudança e Edite esta resposta, se necessário.) Respondeu 23 de junho 12 às 4:04 Heres um filtro passa-baixa de um único polo (média móvel, com freqüência de corte CutoffFrequency). Muito simples, muito rápido, funciona muito bem e quase sem memória. Nota: Todas as variáveis têm um alcance além da função de filtro, exceto o passado em newInput Note: Este é um filtro de estágio único. Múltiplos estágios podem ser conectados em cascata para aumentar a nitidez do filtro. Se você usar mais de um estágio, você precisará ajustar o DecayFactor (como se relaciona com a frequência de corte) para compensar. E, obviamente, tudo que você precisa é que as duas linhas colocadas em qualquer lugar, eles não precisam de sua própria função. Este filtro possui um tempo de aceleração antes que a média móvel represente a do sinal de entrada. Se você precisar ignorar esse tempo de aceleração, basta inicializar o MovingAverage para o primeiro valor do newInput em vez de 0 e espero que o primeiro NewInput não seja um outlier. (CutoffFrequencySampleRate) tem um intervalo entre 0 e 0,5. DecayFactor é um valor entre 0 e 1, geralmente perto de 1. Os flutuadores de precisão única são bons o suficiente para a maioria das coisas, eu apenas prefiro duplas. Se você precisa ficar com números inteiros, você pode converter DecayFactor e Factor de amplitude em inteiros fracionários, nos quais o numerador é armazenado como inteiro e o denominador é uma potência inteira de 2 (para que você possa mudar de bit para a direita como o Denominador em vez de ter que dividir durante o ciclo do filtro). Por exemplo, se DecayFactor 0.99 e você deseja usar números inteiros, você pode definir o DecayFactor 0.99 65536 64881. E então, sempre que você se multiplicar pelo DecayFactor no loop do filtro, basta mudar o resultado 16. Para obter mais informações sobre isso, um excelente livro é esse Online, capítulo 19 em filtros recursivos: dspguidech19.htm PS Para o paradigma da Média em Movimento, uma abordagem diferente para definir DecayFactor e AmplitudeFactor que pode ser mais relevante para suas necessidades, digamos que você quer o anterior, cerca de 6 itens em média juntos, fazendo isso discretamente, você adicionará 6 itens e dividirá por 6, então Você pode configurar o AmplitudeFactor para 16, e DecayFactor para (1.0 - AmplitudeFactor). Respondeu 12 de maio 12 às 22:55 Todos os outros comentaram detalhadamente sobre a utilidade do IIR vs. FIR e sobre a divisão de poder de dois. Eu gostaria de dar alguns detalhes de implementação. O abaixo funciona bem em pequenos microcontroladores sem FPU. Não há multiplicação, e se você mantém N um poder de dois, toda a divisão é de um único ciclo de mudança de bits. Tampão de anel FIR básico: mantenha um buffer de execução dos últimos valores de N e uma SOM em execução de todos os valores no buffer. Cada vez que uma nova amostra vem, subtrair o valor mais antigo no buffer de SUM, substituí-lo pela nova amostra, adicionar a nova amostra a SUM e SOMN de saída. Tampão de anel IIR modificado: mantenha uma SOM executória dos últimos valores de N. Cada vez que uma nova amostra vem, SUM - SUMN, adicione a nova amostra e saia SUMN. Respondeu 28 de agosto 13 às 13:45 Se eu tiver lido você direito, você descreve um filtro IIR de primeiro ordem, o valor que você está subtraindo não é o valor mais antigo que está caindo, mas sim a média dos valores anteriores. Os filtros IIR de primeiro orden certamente podem ser úteis, mas eu não tenho certeza do que você quer dizer quando você sugere que a saída seja a mesma para todos os sinais periódicos. A uma taxa de amostragem de 10KHz, a alimentação de uma onda quadrada de 100Hz em um filtro de caixa de 20 estágios produzirá um sinal que sobe uniformemente para 20 amostras, fica alto por 30, cai uniformemente para 20 amostras e fica com baixo para 30. Uma ordem de primeira ordem Filtro IIR. Ndash supercat 28 de agosto 13 às 15:31 renderá uma onda que começa a subir bruscamente e gradualmente se nivela perto (mas não em) o máximo de entrada, então começa a cair bruscamente e gradualmente nivela perto (mas não at) o mínimo de entrada. Comportamento muito diferente. Ndash supercat 28 de agosto 13 às 15:32 Uma questão é que uma média móvel simples pode ou não ser útil. Com um filtro IIR, você pode obter um bom filtro com relativamente poucos calcs. O FIR que você descreve só pode dar-lhe um retângulo no tempo - um sinc na freq - e você pode gerenciar os lobos laterais. Pode valer a pena lançar alguns números inteiros para tornar uma boa FIR sintonizada simétrica se você pode poupar os tiques do relógio. Ndash Scott Seidman 29 de agosto 13 às 13:50 ScottSeidman: Não há necessidade de se multiplicar se um simplesmente tiver cada estágio da FIR ou produzir a média da entrada para esse estágio e seu valor armazenado anterior, e depois armazenar a entrada (se tiver O intervalo numérico, pode-se usar a soma em vez da média). Se isso é melhor do que um filtro de caixa depende do aplicativo (a resposta de passo de um filtro de caixa com um atraso total de 1 ms, por exemplo, terá um pico d2dt desagradável quando a entrada muda, e novamente 1 ms depois, mas terá o mínimo Possível ddt para um filtro com um atraso total de 1ms). Ndash supercat 29 de agosto às 15:25 Como disse mikeselectricstuff, se você realmente precisa reduzir suas necessidades de memória e você não se importa que sua resposta de impulso seja exponencial (em vez de um pulso retangular), eu iria por um filtro exponencial de média móvel . Eu os uso extensivamente. Com esse tipo de filtro, você não precisa de nenhum buffer. Você não precisa armazenar N amostras passadas. Apenas um. Então, seus requisitos de memória são reduzidos por um fator de N. Além disso, você não precisa de nenhuma divisão para isso. Somente multiplicações. Se você tem acesso à aritmética de ponto flutuante, use as multiplicações de ponto flutuante. Caso contrário, faça multiplicações inteiras e mude para a direita. No entanto, estamos em 2012 e eu recomendaria que você usasse compiladores (e MCUs) que permitem que você trabalhe com números de ponto flutuante. Além de ser mais eficiente e mais eficiente em memória (você não precisa atualizar itens em qualquer buffer circular), eu diria que também é mais natural. Porque uma resposta exponencial de impulso corresponde melhor à maneira como a natureza se comporta, na maioria dos casos. Respondeu 20 de abril 12 às 9:59 Um problema com o filtro IIR como quase tocado por olin e supercat, mas aparentemente desconsiderado por outros é que o arredondamento apresenta alguma imprecisão (e potencialmente biastruncação). Assumindo que N é um poder de dois, e apenas uma aritmética inteira é usada, a direita de mudança elimina sistematicamente os LSBs da nova amostra. Isso significa que, quanto tempo a série possa ser, a média nunca levará em consideração essa série. Por exemplo, suponha uma série que diminua lentamente (8,8,8. 8,7,7,7. 7,6,6) e assume que a média é de fato 8 no início. A amostra do punho 7 trará a média para 7, independentemente da força do filtro. Apenas para uma amostra. A mesma história para 6, etc. Agora pense no contrário. A série sobe. A média permanecerá em 7 para sempre, até que a amostra seja grande o suficiente para fazê-la mudar. Claro, você pode corrigir o viés, adicionando 12N2, mas isso realmente não resolverá o problema de precisão. Nesse caso a série decrescente permanecerá para sempre em 8 até a amostra ser 8-12 (N2). Para N4, por exemplo, qualquer amostra acima de zero manterá a média inalterada. Eu acredito que uma solução para isso implicaria manter um acumulador de LSBs perdidos. Mas eu não consegui o suficiente para ter o código pronto, e não tenho certeza de que isso não prejudicaria o poder do IIR em alguns outros casos de séries (por exemplo, se 7,9,7,9 seria médio para 8). Olin, sua cascata de dois estágios também precisaria de alguma explicação. Você quer dizer segurar dois valores médios com o resultado do primeiro alimentado no segundo em cada iteração. Qual é o benefício deste Processamento de Sinais Filtros Digitais Os filtros digitais são, por essência, sistemas amostrados. Os sinais de entrada e saída são representados por amostras com distância de tempo igual. Os filtros de resposta de Implulgação finita (FIR) são caracterizados por uma resposta de tempo dependendo apenas de um dado número das últimas amostras do sinal de entrada. Em outros termos: uma vez que o sinal de entrada caiu para zero, a saída do filtro fará o mesmo após um determinado número de períodos de amostragem. A saída y (k) é dada por uma combinação linear das últimas amostras de entrada x (k i). Os coeficientes b (i) dão o peso para a combinação. Eles também correspondem aos coeficientes do numerador da função de transferência de filtro do domínio z. A figura a seguir mostra um filtro FIR da ordem N 1: Para os filtros de fase linear, os valores dos coeficientes são simétricos em torno do meio e a linha de atraso pode ser dobrada em volta desse ponto do meio para reduzir o número de multiplicações. A função de transferência de filtros FIR apenas permite um numerador. Isso corresponde a um filtro totalmente zero. Os filtros FIR normalmente requerem pedidos elevados, na magnitude de várias centenas. Assim, a escolha deste tipo de filtros precisará de uma grande quantidade de hardware ou CPU. Apesar disso, uma das razões para escolher uma implementação do filtro FIR é a capacidade de alcançar uma resposta de fase linear, o que pode ser um requisito em alguns casos. No entanto, o designer fiter tem a possibilidade de escolher filtros IIR com uma boa linearidade de fase na banda passante, como os filtros Bessel. Ou para projetar um filtro allpass para corrigir a resposta de fase de um filtro IIR padrão. Filtros médios móveis (MA) Os modelos Editar modelo médio móvel (MA) são modelos de processo na forma: os processos MA são uma representação alternativa dos filtros FIR. Filtros médios Editar Um filtro calculando a média das N últimas amostras de um sinal É a forma mais simples de um filtro FIR, sendo todos os coeficientes iguais. A função de transferência de um filtro médio é dada por: A função de transferência de um filtro médio possui N zeros igualmente espaçados ao longo do eixo de freqüência. No entanto, o zero em DC é mascarado pelo pólo do filtro. Por isso, existe um lóbulo maior, um DC que explica a banda de passagem do filtro. Filtros Integrator-Comb (CIC) em cascata Edit A O filtro integrador-pente em cascata (CIC) é uma técnica especial para a implementação de filtros médios colocados em série. A colocação em série dos filtros médios melhora o primeiro lobo em DC em comparação com todos os outros lóbulos. Um filtro CIC implementa a função de transferência de N filtros médios, cada um calculando a média de amostras R M. Sua função de transferência é assim dada por: os filtros CIC são usados para dizimar o número de amostras de um sinal por um fator de R ou, em outros termos, reescrever um sinal a uma freqüência mais baixa, descartando amostras R 1 de R. O fator M indica quanto do primeiro lobo é usado pelo sinal. O número de estádios de filtro médio, N. Indica quão bem outras bandas de freqüência são amortecidas, à custa de uma função de transferência menos plana em torno de DC. A estrutura CIC permite implementar todo o sistema com apenas agregadores e registros, não usando multiplicadores que sejam gananciosos em termos de hardware. O downsampling por um fator de R permite aumentar a resolução do sinal pelos bits log 2 (R) (R). Filtros canônicos Edit Canonical filters implementam uma função de transferência de filtro com vários elementos de atraso iguais à ordem do filtro, um multiplicador por coeficiente de numerador, um multiplicador por coeficiente de denominador e uma série de elementos de som. De forma semelhante às estruturas canónicas de filtros ativos, esse tipo de circuitos mostrou-se muito sensível aos valores dos elementos: uma pequena alteração em coeficientes teve um grande efeito na função de transferência. Aqui também, o design de filtros ativos mudou de filtros canônicos para outras estruturas, como cadeias de seções de segunda ordem ou filtros de salto. Cadeia de secções de segunda ordem Editar uma seção de segunda ordem. Muitas vezes referido como biquad. Implementa uma função de transferência de segunda ordem. A função de transferência de um filtro pode ser dividida em um produto de funções de transferência associadas a um par de pólos e possivelmente um par de zeros. Se a ordem das funções de transferência for estranha, então uma seção de primeira ordem deve ser adicionada à cadeia. Esta seção está associada ao pólo real e ao zero real se houver um. Forma direta 1 forma direta 2 forma direta 1 transposição de forma direta 2 transposta A forma direta 2 transposta da figura a seguir é especialmente interessante em termos de hardware exigido, bem como a quantificação de sinal e coeficiente. Digital Leapfrog Filters Editar estrutura de filtro Editar filtros de salto digital base na simulação de filtros de salto analógico ativo. O incentivo para esta escolha é herdar das excelentes propriedades de sensibilidade à banda passante do circuito de escada original. O seguinte filtro de 4passões de allpass do allpass do pólo pode ser implementado como um circuito digital, substituindo os integradores analógicos por acumuladores. A substituição dos integradores analógicos por acumuladores corresponde a simplificar a transformada Z em z 1 s T. Quais são os dois primeiros termos da série Taylor de z e x p (s T). Essa aproximação é boa o suficiente para filtros onde a freqüência de amostragem é muito maior do que a largura de banda do sinal. Transferir Função A representação do espaço de estado do filtro precedente pode ser escrita como: A partir deste conjunto de equações, pode-se escrever as matrizes A, B, C, D como: A partir desta representação, as ferramentas de processamento de sinais, como Octave ou Matlab, permitem traçar A resposta de freqüência dos filtros ou para examinar seus zeros e pólos. No filtro de salto digital, os valores relativos dos coeficientes definem a forma da função de transferência (Butterworth. Chebyshev.), Enquanto suas amplitudes definem a freqüência de corte. Dividir todos os coeficientes por um fator de dois desloca a frequência de corte para baixo em uma oitava (também um fator de dois). Um caso especial é o filtro Buterworth de 3ª ordem, que possui constantes de tempo com valores relativos de 1, 12 e 1. Devido a isso, este filtro pode ser implementado em hardware sem qualquer multiplicador, mas usando mudanças em vez disso. Os modelos Autoregressive Filters (AR) Edit Autoregressive Filters (AR) Edit Autoregressive (AR) são modelos de processo na forma: Onde u (n) é a saída do modelo, x (n) é a entrada do modelo e u (n - m) são anteriores Amostras do valor de saída do modelo. Esses filtros são chamados de autorregressivos porque os valores de saída são calculados com base em regressões dos valores de saída anteriores. Os processos AR podem ser representados por um filtro de todos os pólos. Filtros ARMA Edit Autoregressive Moving-Average (ARMA) filtros são combinações de AR e MA filtros. A saída do filtro é dada como uma combinação linear tanto da entrada ponderada como das amostras de saída ponderadas: os processos ARMA podem ser considerados como um filtro IIR digital, com pólos e zeros. Os filtros AR são preferidos em muitos casos porque podem ser analisados usando as equações de Yule-Walker. Os processos MA e ARMA, por outro lado, podem ser analisados por equações não-lineares complicadas, difíceis de estudar e modelar. Se tivermos um processo AR com coeficientes de peso de toque a (um vetor de a (n), a (n - 1).) Uma entrada de x (n). E uma saída de y (n). Podemos usar as equações de Yule-Walker. Dizemos que x 2 é a variância do sinal de entrada. Tratamos o sinal de dados de entrada como um sinal aleatório, mesmo que seja um sinal determinista, porque não sabemos qual será o valor até que o receba. Podemos expressar as equações de Yule-Walker como: Onde R é a matriz de correlação cruzada da saída do processo E r é a matriz de autocorrelação da saída do processo: Variance Edit Podemos mostrar que: Podemos expressar a variância do sinal de entrada como: Ou , Expandindo e substituindo in para r (0). Podemos relacionar a variância de saída do processo com a variância de entrada: compreensão de filtros de integrador e penteado em cascata Por Richard Lyons, cortesia da programação de sistemas embutidos 31 de março de 2005 (14:49 PM) O filtro CIC anteriormente obscuro é agora vital para muitos tipos de alta - Volume de tarefas de comunicação sem fio e equipamentos. O uso de filtros CIC pode reduzir os custos, melhorar a confiabilidade e ajudar o desempenho. Heres um guia para você começar. Os filtros digitais de integrador-pente em cascata (CIC) são implementações computacionalmente eficientes de filtros de passagem baixa de banda estreita e muitas vezes são incorporados em implementações de hardware de decimação e interpolação em sistemas de comunicação modernos. Os filtros CIC foram introduzidos na comunidade de processamento de sinal, por Eugene Hogenauer, há mais de duas décadas, mas as suas possibilidades de aplicação cresceram nos últimos anos. 1 As melhorias na tecnologia de chips, o aumento do uso de técnicas de filtragem de polifases, os avanços nas implementações do conversor delta-sigma e o crescimento significativo nas comunicações sem fio têm suscitado muito interesse nos filtros CIC. Embora o comportamento e a implementação desses filtros não sejam complicados, sua cobertura tem sido escassa na literatura de sistemas embarcados. Este artigo tenta aumentar o corpo da literatura para engenheiros de sistemas embarcados. Depois de descrever alguns aplicativos para os filtros CIC, introduzir sua estrutura e comportamento, apresentar o desempenho do domínio de freqüência dos filtros CIC e discutir várias questões práticas importantes na construção desses filtros. Aplicações do filtro CIC Os filtros CIC são adequados para a filtragem de antialiasing antes da decimação (redução da taxa de amostra), como mostrado na Figura 1a e para filtragem anti-imagem para sinais interpolados (aumento da taxa de amostra) como na Figura 1b. Ambos os aplicativos estão associados a filtragem de taxa muito alta de highx2014, como modulação em quadratura de hardware e desmodulação em sistemas sem fio modernos e conversores AD e DA delta-sigma. Como os seus envelopes de resposta de magnitude de frequência são sin (x) semelhantes a x, os filtros CIC normalmente são seguidos ou precedidos por filtros FIR de linha de atraso tapped-step lowpass de nível linear de maior desempenho cujas tarefas são para compensar os filtros CIC não - Banda passadeira plana. Essa arquitetura de filtro em cascata tem benefícios valiosos. Por exemplo, com a decimação, você pode reduzir significativamente a complexidade computacional da filtragem de passagem baixa em banda estreita em comparação com se você usou um filtro de resposta de impulso finito de passagem baixa simples (FIR). Além disso, o filtro FIR de seguimento opera com taxas de clock reduzidas, minimizando o consumo de energia em aplicações de hardware de alta velocidade. Um bônus crucial no uso de filtros CIC e uma característica que os torna populares em dispositivos de hardware, é que eles não precisam de multiplicação. A aritmética necessária para implementar esses filtros digitais é apenas adições e subtrações. Com isso dito, vejamos como os filtros CIC funcionam. Filtro de soma de corrida recursiva Os filtros de CIC originam-se da noção de um filtro de soma de corrida recursiva. Que é em si uma forma eficiente de uma média média não recursiva. Lembre-se do processo de média móvel em D padrão na Figura 2a. Lá, vemos que D -1 summations (mais um multiplicado por 1 D) são necessários para calcular a saída de média y (n). A saída de filtros de média em movimento do ponto D no tempo é expressa como: onde n é o nosso índice de domínio do tempo. A expressão de domínio z para esta média móvel é: enquanto a função de transferência de H (z) de domínio z é: Eu forneço essas equações para não complicar as coisas, mas porque elas são úteis. A Equação 1 nos informa como construir uma média média móvel e a Equação 3 é na forma usada pelo software comercial de processamento de sinal para modelar o comportamento de domínio de freqüência da média média. O próximo passo na nossa jornada para entender os filtros CIC é considerar uma forma equivalente da média móvel, o filtro da soma de corrida recursiva descrito na Figura 2b. Lá, vemos que a amostra de entrada atual x (n) é adicionada e a amostra de entrada x mais antiga (n - D) é subtraída da média de saída anterior y (n -1). É chamado recursivo porque tem feedback. Cada amostra de saída de filtro é mantida e usada para calcular o próximo valor de saída. A equação de diferença dos filtros de soma de corrida recursiva é: tendo função de transferência de H - dominio H (z) de: Usamos a mesma variável H (z) para as funções de transferência do filtro de média móvel e do filtro de soma recorrente recursiva porque As funções de transferência são iguais. É verdade. A Equação 3 é a expressão não recursiva e a Equação 5 é a expressão recursiva para uma média de pontos D. A prova matemática disso pode ser encontrada em meu livro sobre processamento de sinal digital, mas em breve eu demonstre essa equivalência com um exemplo. 2 Heres por que nos preocupamos com os filtros recursivos da soma de corrida: a média padrão móvel na Figura 2a deve realizar adições D -1 por amostra de saída. O filtro de soma de corrida recursiva tem a doce vantagem de que apenas uma adição e uma subtração são necessárias por amostra de saída, independentemente do comprimento de atraso D. Esta eficiência computacional torna o filtro de soma recorrente recursiva atrativo em muitas aplicações que procuram redução de ruído através da média. Em seguida, veja como um filtro CIC é, por si só, um filtro recursivo de soma de corrida. Estruturas de filtro CIC Se condensarmos a representação da linha de atraso e ignorarmos a escala 1 D na Figura 2b, obtemos a forma clássica de um filtro CIC de 1ª ordem, cuja estrutura em cascata é mostrada na Figura 2c. A parte feedforward do filtro CIC é chamada de seção de pente, cujo diferencial é D. Enquanto a seção de feedback normalmente é chamada de integrador. A fase de pente subtrai uma amostra de entrada atrasada da amostra de entrada atual, e o integrador é simplesmente um acumulador. A equação de diferença de CIC filtros é: e a função de transferência de domínio-z é: Para ver por que o filtro CIC é de interesse, primeiro examinamos seu comportamento no domínio do tempo, para D 5, mostrado na Figura 3. Se um impulso unitário - Sequência, uma amostra de valor unitário seguida por muitas amostras de valor zero, foi aplicada na fase de pente, que a saída de estágio é como mostrado na Figura 3a. Agora pense, qual seria a saída do integrador se a sua entrada fosse a resposta de impulso dos estágios de pente. O impulso positivo inicial do filtro de pente inicia a saída de todos os integradores, como na Figura 3b. Então, D amostras mais tarde, o impulso negativo da fase de pente chega ao integrador para zero todas as amostras de saída de filtro CIC adicionais. A principal questão é que a resposta de impulso unitário combinada do filtro CIC, sendo uma seqüência retangular, é idêntica às respostas de impulso unitário de um filtro de média móvel e do filtro de soma de corrida recursiva. (As médias avançadas, os filtros de soma de corrida recursiva e os filtros de CIC são parentes finais. Eles têm os mesmos locais de polezero de domínio-z, suas respostas de magnitude de freqüência têm formas idênticas, suas respostas de fase são idênticas e suas funções de transferência diferem apenas por uma constante Fator de escala.) Se você entender o comportamento do domínio do tempo de uma média média, então você agora entende o comportamento do domínio do CIC no filtro CIC na Figura 2c. A freqüência de freqüência e a resposta de fase linear de um filtro D 5 CIC são mostradas na Figura 4a em que a freqüência x192 s é a taxa de amostragem do sinal de entrada em Hz. Podemos obter uma expressão para a resposta de freqüência dos filtros CIC, avaliando a função de transferência de Equecções 7s H cic (z) no círculo da unidade z-planes, definindo z e j 2 x3C0x192. Cedendo: usando a identidade Eulers 2 j sen (x3B1) e jx3B1 - e jx3B1. Podemos escrever: se ignorarmos o fator de fase na Equação 9, essa proporção de termos de pecado () pode ser aproximada por uma função de pecado (x) x. Isso significa que o CIC filtra a resposta de magnitude de freqüência aproximadamente igual a uma função sin (x) x centrada em 0Hz como vemos na Figura 4a. (É por isso que os filtros CIC são às vezes chamados de filtros de sinc.) Os designers de filtros digitais gostam de ver parcelas de polezero em plano Z, por isso fornecemos as características do plano Z de um filtro D 5 CIC na Figura 4c, onde o filtro de pente produz D Zeros, igualmente espaçados em torno do círculo unitário, e o integrador produz um único pólo cancelando o zero em z 1. Cada um dos zeros de pente, sendo uma D raiz de 1, está localizado em z (m) ej 2 x3C0m D. Onde m 0, 1, 2. D -1, correspondendo a uma magnitude nula na Figura 4a. A situação normalmente arriscada de ter um pólo de filtro diretamente no círculo da unidade não precisa nos incomodar aqui porque não há erro de quantização de coeficientes em nossa função de transferência H cic (z). Os coeficientes de filtro de CIC são aqueles e podem ser representados com precisão perfeita com formatos de número de ponto fixo. Embora recursivos, os filtros de CIC feliz são garantidos estável, fase linear mostrada na Figura 4b, e têm respostas de impulso de comprimento finito. A 0Hz (DC), o ganho de um filtro CIC é igual ao atraso D do filtro de pente. Esse fato, cuja derivação está disponível, será importante para nós quando implementarmos um filtro CIC no hardware. 2 Figura 5: Filtros CIC de estágio único usados na decimação e interpolação Veja a imagem de tamanho completo Novamente, os filtros CIC são usados principalmente para filtragem de antialiasing antes da decimação e para filtragem anti-imagem para sinais interpolados. Com essas noções em mente, nós trocamos a ordem da Figura 2cs pente e integradorx2014 foram autorizados a fazê-lo porque essas operações são linearx2014 e incluem decote por um fator de mudança de taxa de amostragem R na Figura 5a. (Você pode provar que a resposta de impulso unitário da combinação integratorcomb, antes da mudança de taxa de amostragem, na Figura 5a é igual à da Figura 3c.) Na maioria dos aplicativos de filtro CIC, a mudança de taxa R é igual aos pentes Atraso diferencial D. Mas bem mantenha-os como parâmetros de design separados por enquanto. Figura 6: Resposta de magnitude de um filtro CIC de 1ª ordem, D 8, dizimando: antes da decimação após a demissão de R 8 Ver imagem de tamanho completo A operação de decimação x2193 R significa descartar todos, exceto cada R, amostra, resultando em uma taxa de amostra de saída De x192 s, x192 s, em R. Para investigar um comportamento de domínio de freqüência de filtros CIC em mais detalhes, a Figura 6a mostra a resposta de magnitude de freqüência de um filtro D 8 CIC antes da decimação. A banda espectral, de largura B. Centrado a 0Hz é a banda passada desejada do filtro. Um aspecto-chave dos filtros CIC é o dobramento espectral que ocorre devido à diminuição. Essas bandas espectrais sombreadas em B centradas sobre múltiplos de x192 s, em R na Figura 6a irão diretamente em nossa banda passada desejada após a decimação por R8 como mostrado na Figura 6b. Observe como o maior componente espectral aliased, neste exemplo, é aproximadamente 16dB abaixo do pico da faixa de interesse. É claro que os níveis de potência alias dependem da largura de banda B x2014 quanto menor for a B, menor será a energia aliada depois da dizimação. Figura 7: 1ª ordem, DR 8, interpolando espectros de filtro CIC: imagens espectrales de saída de espectro de entrada Ver imagem de tamanho completo A Figura 5b mostra um filtro CIC usado para interpolação onde o símbolo x2191 R significa inserir R -1 zeros entre cada x (n ) Amostra, obtendo uma taxa de amostragem de saída ay (n) de x192 s, saída Rx192 s, em. (Nesta discussão do filtro CIC, a interpolação é definida como inserção de zeros seguida de filtragem.) A Figura 7a mostra um espectro de banda base arbitrário, com suas replicações espectrales, de um sinal aplicado ao filtro CIC interpolando D R 8 da Figura 5b. O espectro de saída dos filtros na Figura 7b mostra como a filtragem imperfeita dá origem às imagens espectrales não desejadas. Após a interpolação, as imagens indesejadas do espectro de largura base de banda B residem nos centros nulos, localizados em múltiplos inteiros de x192 s, fora R. Se seguimos o filtro CIC com um filtro FIR tradicional de passagem baixa tappedx2014delay-line, cuja faixa de interrupção inclui a primeira banda de imagem, pode ser obtida rejeição de imagem bastante alta. Figura 8: estrutura de filtro de decimação de CIC de 3ª ordem e resposta de magnitude antes da decimação quando DR 8 Ver imagem em tamanho real Melhorar a atenuação de CIC O método mais comum para melhorar o anti-aliasing do filtro CIC e a atenuação da imagem-rejeição é aumentando a ordem M de O filtro CIC usando vários estágios. A Figura 8 mostra a estrutura e a resposta de magnitude de frequência de um filtro de dizimação CIC de 3ª ordem (M 3). Observe o aumento da atenuação em x192 s, fora R na Figura 8b em comparação com o filtro CIC de 1ª ordem na Figura 6a. Como os estágios do M 3 CIC estão em cascata, a resposta geral da magnitude da freqüência será o produto de suas respostas individuais ou: O preço que pagamos pela atenuação anti-alias melhorada é o aderência de hardware adicional e o aumento da banda passante do filtro CIC. Uma penalidade adicional de ordem de filtro aumentada vem do ganho do filtro, que é exponencial com a ordem. Como os filtros CIC geralmente devem funcionar com precisão total para permanecerem estáveis, o número de bits nos agregadores é M log 2 (D), o que significa uma grande penalidade de largura de palavra de dados para filtros de ordem superior. Mesmo assim, esta implementação de múltiplos estágios é comum em circuitos integrados comerciais, onde um filtro CIC de M-order é muitas vezes chamado de filtro sinc M. Figura 9: Implementações de filtro CIC de estágio único: para decimação para interpolação Exibir imagem de tamanho completo Construir um filtro CIC Em filtros CIC, a seção de pente pode preceder ou seguir a seção integradora. No entanto, é sensato colocar a seção de pente no lado do filtro operando na menor taxa de amostragem para reduzir os requisitos de armazenamento no atraso. A troca dos filtros de pente da Figura 5 com as operações de troca de taxa resulta na implementação mais comum de filtros CIC, como mostrado na Figura 9. Observe que a seção de pente dos filtros de decimação agora tem um comprimento de atraso (atraso diferencial) de N D R. Isso porque um atraso de amostra de N após decote por R é equivalente a um atraso de amostra de D antes da decimação por R. Da mesma forma, para o filtro de interpolação, um atraso de amostra de N antes da interpolação por R é equivalente a um atraso de amostra D depois da interpolação por R. Essas configurações da Figura 9 produzem dois benefícios principais: primeiro, o novo atraso diferencial de seções de pente diminui para N D R reduzindo os requisitos de armazenamento de dados em segundo lugar, a seção de pente agora funciona com uma taxa de clock reduzida. Ambos os efeitos reduzem o consumo de energia do hardware. Figura 10: respostas de filtro de decimação de CIC: para vários valores de atraso diferencial N. Quando R 8 para dois fatores de decimação quando N 2 Ver imagem de tamanho completo O parâmetro de design de atraso diferencial de seções de pente N é tipicamente 1 ou 2 para altas proporções de taxa de amostragem, como é freqüentemente usado em conversores de atualizações. N efetivamente define o número de nulos na resposta de freqüência de um filtro de decimação, como mostrado na Figura 10a. Uma característica importante de um decimador de CIC é que a forma da resposta do filtro muda muito pouco, como mostrado na Figura 10b, em função da razão de decimação. Para valores de R maiores que aproximadamente 16, a alteração na forma do filtro é insignificante. Isso permite que o mesmo filtro FIR de compensação seja usado para sistemas de proporção de decimação variável. O filtro CIC sofre de estouro de registro devido ao feedback de unidade em cada etapa do integrador. O transbordamento não tem nenhuma conseqüência enquanto as duas condições seguintes forem atendidas: o alcance do sistema numérico é maior ou igual ao valor máximo esperado na saída, e o filtro é implementado com a aritmética de dois complementos (não - aturizados). Uma vez que um filtro CIC de 1º pedido possui um ganho de D NR a 0Hz (DC), os filtros de decimação CIC em cascata têm um ganho líquido de (NR) M. Cada integrador adicional deve adicionar outra largura de bits NR para os estágios. Os filtros CIC interpolados têm zeros inseridos entre as amostras de entrada, reduzindo seu ganho em um fator de 1 R para contabilizar as amostras de valor zero, de modo que o ganho líquido de um filtro CIC interpolante é (NR) M R. Como o filtro deve usar a aritmética inteira, a largura das palavras em cada etapa do filtro deve ser ampla o suficiente para acomodar o sinal máximo (tempo de entrada em escala total do ganho) nessa fase. Embora o ganho de um filtro de decimação CIC de ordem M (NR) M, os integradores individuais podem experimentar transbordamento. (O seu ganho é infinito em DC). Como tal, o uso da aritmética de dois complementos resolve esta situação de transbordamento, desde que a largura da palavra do integrador acomode a diferença máxima entre duas amostras sucessivas (em outras palavras, a diferença não causa mais do que Um único estouro). Usando o formato binário do complemento dois, com sua propriedade modular envolvente, o filtro de pente em seguida calculará corretamente a diferença correta entre duas amostras sucessivas de saída do integrador. Para a interpolação, o crescimento em tamanho de palavra é um bit por fase de filtro de pente e o transbordamento deve ser evitado para que os integradores se acumulem corretamente. Então, devemos acomodar um pouco mais de crescimento de palavras de dados em cada etapa de pente para interpolação. Existe alguma pequena flexibilidade ao descartar alguns dos bits menos significativos (LSBs) dentro dos estágios de um filtro CIC, à custa do ruído adicional na saída dos filtros. Os efeitos específicos desta remoção de LSB são, no entanto, um problema complicado, você pode aprender mais sobre o assunto lendo o papel de Hogenauers. 1 Enquanto a discussão anterior focada em filtros CIC com fio rígido, esses filtros também podem ser implementados com chips DSP de ponto fixo programáveis. Embora esses chips tenham caminhos de dados inflexíveis e larguras de palavras, a filtragem de CIC pode ser vantajosa para mudanças de taxa de amostragem elevadas. Grandes larguras de palavras podem ser acomodadas com adições de multiplicações à custa de instruções extras. Mesmo assim, para grandes fatores de mudança de taxa de amostragem, a carga de trabalho computacional por amostra de saída, em chips DSP de ponto fixo, pode ser pequena. Filtros de compensação Em aplicações típicas de filtragem de interrupção de interpolação, desejamos uma velocidade passada razoavelmente plana e um desempenho de filtro de região de transição estreito. Essas propriedades desejáveis não são fornecidas apenas por filtros da CIC, com seus ganhos de banda passiva caídos e regiões de transição largas. Nós aliviamos esse problema, em decimação, por exemplo, seguindo o filtro CIC com um filtro FIR não recursivo de compensação, como na Figura 1a, para reduzir a largura de banda de saída e aplanar o ganho de banda passante. Figura 11: Compensação das respostas do filtro FIR com um filtro de CIC com 10 decimais de ordem com uma decimação de 3ª ordem Exibir imagem de tamanho completo A compensação de resposta de amplitude de freqüência dos filtros FIR é idealmente uma versão invertida da resposta de banda passante do filtro CIC semelhante à exibida pelo Curva tracejada na Figura 11a para um simples filtro FIR de três batidas cujos coeficientes são -116, 98, -116. Com a curva pontilhada representando a queda da banda passada não compensada de um filtro R 8 CIC de 1ª ordem, a curva sólida representa a resposta compensada dos filtros em cascata. Se a largura de banda passadeira ou a ordem do filtro CIC aumentam, a correção torna-se maior, exigindo mais torneiras de filtro FIR de compensação. Um exemplo desta situação é mostrado na Figura 11b, onde a curva pontilhada representa a inclinação da banda de passagem de um filtro R 8 CIC de 3ª ordem e a curva tracejada, sob a forma de xsin (x) 3, é a resposta de um 15-tap Filtro FIR de compensação com os coeficientes -1, 4, -16, 32, -64, 136, -352, 1312, -352, 136, -64, 32, -16, 4, -1. Uma correção de banda larga também significa sinais perto de x192 s, 2 são atenuados com o filtro CIC e, em seguida, devem ser amplificados no filtro de correção, adicionando ruído. Como tal, os praticantes geralmente limitam a largura da banda passante do filtro FIR de compensação para cerca de 14 da freqüência do primeiro nulo na resposta do filtro CIC. Essas curvas tracejadas na Figura 11 representam as respostas de magnitude de freqüência de filtros FIR de compensação dentro dos quais não ocorrem mudanças na taxa de amostragem. (As taxas de amostra de entrada e saída dos filtros FIR são iguais às x192 s, saída da taxa de saída do filtro CIC da tentativa). Se um filtro FIR de compensação fosse projetado para fornecer uma dizimação adicional por dois, sua resposta de magnitude de freqüência seria semelhante àquela Na Figura 12, onde gts, in é a taxa de amostragem de entrada de filtros de compensação. Figura 12: Resposta de magnitude de frequência de uma compensação de dizimação por 2 Filtro FIR Ver imagem de tamanho completo Técnicas avançadas Esta é a linha inferior da nossa discussão em filtro de CIC: um filtro CIC de dizimar é apenas uma implementação recursiva muito eficiente de uma média móvel Filtro, com torneiras NR, cuja saída é dizimada por R. Da mesma forma, o filtro CIC de interpolação é a inserção de amostras R -1 zero entre cada amostra de entrada seguida de um filtro NR - tap de média móvel que funciona com a taxa de amostra de saída x192 s, para fora. As implementações em cascata na Figura 1 resultam em cargas de trabalho computacionais totais muito menores do que usando um único filtro FIR sozinho para alta decimação e interpolação de mudança de taxa de amostragem. As estruturas de filtro CIC são projetadas para maximizar a quantidade de processamento de baixa taxa de amostragem para minimizar o consumo de energia em aplicações de hardware de alta velocidade. Novamente, os filtros CIC não precisam de multiplicação, sua aritmética é estritamente adição e subtração. O seu desempenho permite-nos afirmar que, tecnicamente falando, os filtros CIC são máquinas de filtragem magra e médias. No final, existem formas de construir filtros CIC não recorrentes que aliviam o problema de crescimento da largura da palavra dos tradicionais filtros CIC recursivos. Essas arquiteturas avançadas de filtro CIC são discutidas no meu livro Compreendendo processamento de sinal digital, 2E. 2 Richard Lyons é engenheiro de sistemas de consultoria e palestrante com Besser Associates em Mountain View, Ca. Ele é o autor de Compreender o Processamento de Sinal Digital 2E e um editor associado para o IEEE Signal Processing Magazine onde ele criou e edita a coluna DSP Tips amp Tricks. Você pode alcançá-lo em r. lyonsieee. org. Hogenauer, Eugene. Uma Classe Econômica de Filtros Digitais para Decimação e Interpolação, Transações de IEEE em Acústica, Processo de Discurso e Sinal. Vol. ASSP-29, pp. 155-162, abril de 1981. Lyons, Richard, Compreensão do processamento de sinal digital, 2º Ed. Prentice Hall, Upper Saddle River, Nova Jersey, 2004, pp. 556-561.
Comments
Post a Comment