Estou criando um canalizador que consiste em um misturador complexo, dizimador CIC e um filtro de compensação / dizimação FIR. O filtro FIR final pode, se for o caso, ser implementado como mais de um filtro.
Minha pergunta é: como faço para projetar um filtro que compense a resposta de frequência muito não plana do filtro CIC? Você cria a resposta de frequência que deseja calculando a resposta recíproca da CIC e a executa através de uma FFT inversa para obter a resposta ao impulso?
Como você pode ver, embora meu problema específico se refira aos filtros CIC, minha pergunta é realmente sobre como você cria qualquer tipo de filtro de compensação de distorção.
Obrigado pelo seu tempo.
filters
fft
filter-design
Jim Clay
fonte
fonte
Respostas:
A seguir, aborda a compensação CIC e não é uma técnica geral de "distorção". Mas é um método direto para "compensar" a "distorção" não variável. Se a resposta em frequência é conhecida, o inverso da frequência pode ser usado para compensar. Exemplos como o filtro CIC, onde um filtro ruim pode ser usado devido à complexidade reduzida, são compensados posteriormente na cadeia de sinal. Neste exemplo, a resposta de frequência é conhecida e o inverso pode ser usado. Observe que, com os filtros com várias taxas, você deseja usar apenas o espectro "utilizável" após a dizimação.
Geralmente, para compensar um filtro CIC, o inverso da resposta dos filtros CIC pode ser usado para gerar o filtro de compensação. O CIC tem uma resposta de (consulte a referência [r2] ou [r3])
Onde D é o atraso diferenciado, M é a taxa de dizimação e N é a ordem dos filtros (número de filtros em cascata). O inverso pode ser especificado como
Uma vez que tenhamos a resposta de frequência do filtro de compensação, podemos simplesmente escolher o comprimento do filtro FIR que desejamos. O comprimento do FIR é específico da aplicação. Obviamente, quanto mais tempo o filtro FIR, melhor a compensação.
A seguir, são apresentados gráficos dessa compensação direta.
A seguir, é apresentado o código Python para criar as respostas e gráficos de frequência.
[r1] Altera, "Entendendo os filtros de compensação CIC"
[r2] R. Lyons, "Understanding Digital Signal Processing", 2ª ed., Prentice Hall, Upper Saddle River, Nova Jersey, 2004
[r3] R. Lyons, "Entendendo os filtros combinados em cascata do integrador"
fonte
M=8
eN=9
ele cria as mesmas parcelas como referência 1. eu usei a nomenclatura mais perto de referência 2.Eu acho que a resposta de Christopher é boa. Eu pensei em adicionar um para nós, tipos preguiçosos / trapaceiros.
Enquanto vasculhava o fdatool (Ferramenta de design e análise de filtros) do Matlab, descobri que ele pode projetar e modelar filtros CIC e sinc sinc inversos, onde o filtro sinc inverso é o filtro de compensação de distorção do CIC.
Você gera o filtro CIC indo diretamente para a página "Criar um filtro com várias taxas" (botão à esquerda na versão R2011b) e especificando o filtro CIC. Você pode então definir todos os parâmetros desejados, como taxas de interpolação / dizimação, número de cascatas (o Matlab chama de "seções"), etc.
Você cria o filtro sinc inverso, indo para a página "Filtro de design" (a página que a ferramenta assume como padrão quando é iniciada) e especificando "Inverse Sinc Lowpass" no menu suspenso Lowpass. Você pode então definir os vários parâmetros para ele. Ele possui alguns parâmetros exclusivos na parte Opções da caixa de diálogo, incluindo "p", que corresponde ao número de cascatas (expoente sinc).
O design do filtro inverso e sinc não foi completamente satisfatório, porém, já que acertar parecia menos um exemplo de matemática do que descobrir onde estava minha banda de passagem, qual era a queda do CIC naquele momento e depois projetar um filtro que quase cancelou fora essa queda. Como meu filtro CIC tinha quatro cascatas, eu pensaria que seria necessário definir "p" para quatro, mas ele supercompensou quando fiz isso. Acabei deixando "p" em 1, o valor padrão.
A ferramenta realmente brilhou quando eu salvei os dois filtros na minha sessão e, em seguida, entrei no gerenciador de filtros e os coloquei em cascata para ver a resposta geral de frequência. Isso foi muito útil e fácil de fazer.
fonte
Sem duplicar a resposta aqui, consulte
como fazer filtro de compensação CIC
que mostra uma solução muito simples de 3 torneiras para compensação de CIC.
Isso é específico para o CIC ou é necessário qualquer aplicativo para um Sinc inverso (como antes da conversão D / A).
Para compensar qualquer distorção transversal geral (aquela que poderia ser replicada com um filtro transversal em oposição à distorção de ruído dinâmico), eu adotaria a abordagem de usar as equações de Wiener Hopf para criar um filtro de compensação usando a abordagem de erro ao quadrado, idealmente usando uma sequência de treinamento, se disponível, para comparar a resposta desejada com a real e treinar o equalizador. Para um aplicativo que mostra isso com o código-fonte usado, consulte:
Compensação da resposta de frequência do alto-falante em um sinal de áudio
fonte