Quais fatores devo considerar ao escolher uma realização de filtro IIR?

16

Os filtros IIR podem ser implementados como forma direta 1 ou 2 . Mas como você decide qual formulário usar? Quais são os prós e os contras de cada um?

anasimtiaz
fonte
Além disso, qual é a melhor maneira de implementá-los na GPU.
Royi 18/08/19
2
@Drazick, as GPUs são um jogo totalmente diferente. exigindo outro questionário.
Trevor Boyd Smith

Respostas:

9

Primeiro de tudo, um pouco da wikipedia sobre a implementação direta dos formulários I e II .

O formulário direto I requer mais memória, mas é uma estratégia um pouco mais simples e é menos provável que tenha problemas de arredondamento e ressonância.

O formulário direto II requer menos memória, mas tem o potencial de interações incomuns, números maiores e mais erros de arredondamento. Muito disso pode ser reduzido com filtros menores em cascata, especialmente filtros de segunda ordem.

PearsonArtPhoto
fonte
2
Em ambos os casos, você deve estar conectando em cascata seções de segunda ordem.
Oliver Charlesworth
1
Então, em suma, é a troca de memória versus erro de arredondamento?
Anasimtiaz 18/08
2
Resposta super fraca IMO. Tecnicamente, ele responde à pergunta ... mas apenas "tecnicamente". Eu gostaria de ver algum código fonte em um idioma. Eu sei como implementar um filtro FIR que é fácil. Vamos ver o código-fonte IIR.
Trevor Boyd Smith
2
Além disso, em termos de operações matemáticas realizadas por amostra, qual é a melhor implementação I ou II?
Anasimtiaz
1
Eu sei como fazer a filtragem FIR. Eu também sei o que é a forma direta I / II / III / IV. o que não tenho experiência em fazer é IIR: design ou implementação. Meu comentário original não foi muito construtivo. Eu deveria ter dito "Eu entendo o que é a forma direta I-IV, você poderia falar mais sobre como você cria / implementa um filtro IIR?"
Trevor Boyd Smith
9

Um pouco datado, mas pode merecer uma resposta mais abrangente, especialmente porque o Direct Form II pode causar muitos problemas. Antes de tudo, não existe "tamanho único" e a melhor opção depende da sua aplicação e restrições específicas. O que você pode considerar é

  1. Memória: o Direct Form II e o Transposed Form II ocupam um pouco menos de memória de estado do que o Direct Form I e o Transposed Form I, mas em uma implementação de seção de segunda ordem em cascata a diferença é pequena
  2. MIPS: Em termos de número de multiplicações e adições, todas as quatro implementações são iguais. No entanto, dependendo do conjunto de instruções do processador específico, pode haver diferenças significativas na eficiência da implementação. Então "depende".
  3. Propriedades de ponto fixo: isso faz uma enorme diferença. Primeiramente, você deve certificar-se de que suas variáveis ​​de estado não excedam, portanto, é necessário analisar a função de transferência entre as variáveis ​​de entrada / saída e de estado. Aqui, o Formulário Direto I e o Formulário Transposto II são os vencedores claros. Variáveis ​​de estado são vinculadas a + 106dB ou mais ou menos vs entrada e saída. No formulário II direto, por exemplo, a função de transferência da entrada para o estado é fornecida apenas pelos polos. Eu vi exemplos do mundo real em que isso pode realmente exceder 100 dB de ganho. Este é um não absoluto não para implementação de ponto fixo.
  4. Ruído: Em termos de truncamento e erro de arredondamento, todas as implementações são aproximadamente as mesmas. O problema da função de transferência de variável de estado mencionado em 3) também afeta isso até certo ponto e eu vi problemas de ruído audível com os filtros Direct Form II, mesmo ao usar o ponto flutuante de 32 bits.

Assim, em resumo, o Transposed Form II é mais frequentemente do que não é a melhor escolha. Em alguns cenários de ponto fixo, especialmente se houver problemas significativos de ruído, o Direct Form I é melhor, pois pode ser aumentado mais facilmente com coisas como modelagem de espectro de erros, etc.

Hilmar
fonte
Esta é uma resposta muito mais abrangente e melhor!
Lorem Ipsum
2
Eu descobri hoje - de uma maneira muito mais difícil - por que o Direct Form I é a melhor escolha para minha inscrição. Obrigado por uma resposta muito boa!
Anasimtiaz 14/09/11
1

A menos que você trabalhe com um sistema muito escasso de recursos ou tenha requisitos extremos, isso realmente não importa na prática, se você escolhe a forma direta I ou II. Por exemplo, se você estiver fazendo coisas em um PC ou smartphone, isso realmente não importa. Pessoalmente, prefiro o Formulário I.

O problema real é normalmente o MIPS e, se você planeja fazer uma implementação de ponto fixo, as coisas ficam mais complicadas. Por exemplo, no ARM, seu filtro IIR consumirá muito mais MIPS se os coeficientes e os estados do filtro forem de 32 bits. 32 bits em estados e coeficientes é um requisito se você precisar implementar, por exemplo, um filtro passa-baixo com frequência de corte muito baixa. Nesses casos, você pode usar um tipo diferente de filtro, como, por exemplo, um filtro de variável de estado.

niaren
fonte
1

Além das diferenças técnicas, como precisão numérica, também há a questão da estabilidade. Quando os filtros digitais têm pares pólo / zero próximos um do outro, a resposta de frequência pode se tornar instável em vários locais (geralmente se aproximando de Nyquist ou se aproximando de zero).

Quando os filtros IIR são usados ​​para aplicações musicais, a escolha da realização pode ter um efeito profundo na estabilidade do filtro quando os parâmetros do filtro são modulados em tempo real (por exemplo, variando a frequência de corte em um filtro passa-baixo).

Eu tenho um aplicativo de código aberto que permite ouvir as diferenças, enquanto parâmetros variáveis ​​no tempo, como frequência de corte ou ganho de pico, de cada uma das seguintes realizações:

  • Formulário direto I
  • Formulário direto II
  • Formulário direto transposto I
  • Formulário direto transposto II
  • Forma de treliça
  • Estado variável

O projeto está aqui:

https://github.com/vinniefalco/DSPFiltersDemo.git

https://github.com/vinniefalco/DSPFilters.git

Captura de tela

Vinnie Falco
fonte
1
Você postou isso várias vezes e estou inclinado a aplicar a política de spam, a menos que suas respostas sejam realmente adaptadas às perguntas. Nenhuma dessas postagens responde a perguntas diretamente e também promove um produto. Edite-os para responder diretamente às perguntas ou elas serão removidas.
Phonon
0

Além dos comentários acima sobre memória, MIPS, ruído e estabilidade; há outro fator que é geralmente esquecido. Esse fator é a capacidade de redefinição; o que é muito importante na maioria das minhas situações.

Com uma implementação do Direct Form II, não há estados para as saídas atrasadas; portanto, se você "redefinir" um filtro do Direct Form II para dizer "5", sua saída inicial não será 5. Acho que isso é bastante contraditório -intuitivo que causou sérias frustrações ao usar o Simulink. Por esse motivo, quase sempre uso uma implementação do Direct Form I. Infelizmente, o Simulink suporta apenas o Direct Form I se você tiver a caixa de ferramentas DSP e, mesmo assim, ainda não permite definir as condições iniciais de um sinal de entrada.

Kyle
fonte