Uma das maneiras padrão de implementar um filtro Butterworth é com uma cascata de seções de segunda ordem, cada uma correspondendo a um par de pólos conjugados complexos. Para um filtro de quarta ordem, por exemplo, haveria duas seções de segunda ordem. Se considerarmos como as localizações dos pólos para um filtro passa-baixo mudam no plano z, à medida que o ponto de corte é projetado entre 0hz e Nyquist, o caminho "varrido" por cada par de pólos corresponde a um par de arcos dentro do círculo unitário , conforme ilustrado na figura a seguir [para filtros de quarta ordem]:
Dado o tempo que esses filtros existem e o fato de esses "arcos" corresponderem a linhas retas no plano s, é lógico que alguém teria desenvolvido um formulário de implementação com um único parâmetro capaz de varrer os polos ao longo dos arcos no "tempo de execução" [em oposição ao "tempo de design"]. No entanto, ainda não encontrei nada assim.
É relativamente simples propor várias maneiras de fazer isso, especialmente em segmentos do intervalo, e com a disposição de oferecer um pouco de computação extra. O que eu quero saber é o seguinte:
Existe alguma maneira padrão de implementar um filtro Butterworth [digital] sintonizável de uma determinada ordem que 1) possua propriedades ideais (por exemplo, eficiência, robustez) e 2) cubra toda a faixa?
Ou esse é realmente um problema tão fácil que ninguém se incomoda em falar sobre isso? Se for esse o caso, parece que ele apareceria em programas de design de filtro ao lado das opções para designs "estáticos".
Eu achei isso: A finalidade dos filtros múltiplos Butterworth com freqüência de corte variável , mas a princípio pesquisando não parece ser muita informação sobre o que está nele.
Atualização (re: respostas)
Só para ficar um pouco mais claro:
- Estou procurando um "meta-design" com um parâmetro (digamos de [0,1]) que ajuste automaticamente o ponto de corte de DC para Nyquist (mantendo o ganho normalizado) para uso em um sistema de variação temporal. Algo como esse ressonador bipolar , exceto com restrições de Butterworth. A idéia é que calcular o parâmetro seja mais eficiente do que executar o procedimento de design offline típico em tempo de execução.
- Não estou necessariamente procurando como projetar um "meta-filtro" (por exemplo, fazer a matemática com variáveis em vez de números); estou pensando se há opções para formas de implementação padrão (não óbvias) - porque, por exemplo, a abordagem direta que corresponde ao caso estático acaba tendo problemas numéricos no caso de variação temporal.
- Talvez não haja problemas, e a abordagem direta é a que é usada na prática. Isso seria bom. Minha preocupação é que eu não tenha visto esse tópico mencionado explicitamente em nenhuma das fontes que consultei, mas talvez tenha perdido algo realmente óbvio, por isso estou perguntando.
- No processo de adicionar mais detalhes aqui, deparei-me com um tratamento geral de estruturas paramétricas de biquad, que é quase o que estou procurando (e tem algumas boas referências).
Atualização 2
Estou procurando respostas como a que eu coloquei no meu segundo comentário para Jason R, da seguinte forma:
"Ah, sim, você deseja usar a parametrização III-2b da tese do tipo" tal ou tal ", na forma de treliça de estado derivado, porque resolve o caso de tal e qual borda usando o número mínimo de multiplicações."
Talvez nada disso exista, mas minha pergunta é se existe, e se sim, o que é, ou onde posso encontrá-lo?
Jackpot
Com base em uma referência à "forma canônica do observador" fornecida por Tim Wescott no tópico comp.dsp na resposta de Jason R , decidi assumir que talvez tivesse que começar a procurar na literatura dos sistemas de controle, então tentei fazer uma busca por "espaço de estado" de butterworth , e resultou o seguinte, muito legal, tratamento de projeto / implementação, não apenas os parâmetros paramétricos de Butterworth, mas também os filtros Chebyshev e Elliptic:
Sophocles J. Orfanidis, "Design Paramétrico Digital de Alta Ordem do Equalizador", J. Audio Eng. Soc. Vol. 53, pp. 1026-1046, novembro de 2005.
- Artigo: http://www.ece.rutgers.edu/~orfanidi/ece348/hpeq.pdf
- Matlab Toolbox: http://eceweb1.rutgers.edu/~orfanidi/hpeq/
Vai demorar um pouco para investigar, mas com base no que li até agora, ficaria muito surpreso se não fosse o que estou procurando. Estou entregando este a Jason R pela referência comp.dsp que me levou ao artigo da Orfanidis. Sua resposta também é uma boa visão prática do design de filtros Butterworth também.
Sim, existem formulários de implementação padrão para o Butterworth e quase todas as outras respostas de filtro. Todos eles estão totalmente implementados na minha biblioteca de filtros IIR de código aberto. Aqui está um trecho de código que produz os pares pólo / zero para um filtro Butterworth de grau arbitrário:
Como você pode ver, a posição dos polos é calculada subdividindo o plano s em "pares" de segmentos iguais.
É fornecido código adequado para todos os tipos comuns de respostas de filtro: Chebyshev, Elliptic, Legendre, incluindo as versões de prateleira de cada uma.
https://github.com/vinniefalco/DSPFiltersDemo.git
https://github.com/vinniefalco/DSPFilters.git
fonte