Estou tendo dificuldade para entender o que "infinito" em IIR significa na prática. Em teoria, a resposta de impulso é usada para feedback. Se esse feedback nunca termina, como a saída é gerada?
Estou tendo dificuldade para entender o que "infinito" em IIR significa na prática. Em teoria, a resposta de impulso é usada para feedback. Se esse feedback nunca termina, como a saída é gerada?
Respostas:
Para responder a essa pergunta, você precisa saber o que "Impulso" e "Resposta" significam ...
Um "impulso" é um pulso simples. Digitalmente, seria uma amostra com um valor máximo, enquanto todas as outras amostras antes e depois seriam zero. Se você escutasse isso, ouviria algo como um estalo ou fogo de artifício.
A "resposta" é a saída de um filtro (ou qualquer outra coisa) que recebe o impulso.
Por exemplo, você pode ouvir a "resposta de impulso de uma sala" entrando na sala, dando um simples tapa na mão e ouvindo o eco. Seria necessário um pouco de prática para que a palmada ficasse o mais "afiada" possível. Obter a resposta de impulso de um filtro é da mesma maneira, mas, em vez de bater palmas, você usa um pulso simples e, em vez de uma sala, possui um filtro.
Se você observar a resposta ao impulso de um filtro ou de uma sala, verá que a saída se mexe por um tempo após o impulso (e às vezes também se mexe antes). Na sala, você ouviu esse movimento como o eco. Em um filtro, essa oscilação está diretamente relacionada à frequência e resposta de fase do filtro. Em uma sala, a quantidade de tempo que você ouve o eco é chamada de "tempo de reverberação" - não existe um termo correspondente para um filtro, mas faz parte da resposta ao impulso.
Agora, um filtro FIR (Resposta de impulso finito) é finito porque o tempo de resposta ao impulso é limitado pela matemática. É matematicamente impossível que o tempo de resposta ao impulso ultrapasse o número de toques no filtro - portanto, é finito .
Um filtro IIR, por outro lado, não possui essa limitação matemática no tempo de resposta ao impulso. Se for dada uma precisão matemática infinita, um filtro IIR pode alternar as saídas para sempre. Obviamente, em um sentido prático, isso nunca dura para sempre, já que, em algum momento, a oscilação fica menor que a precisão da matemática usada e desaparece.
FIR Os
filtros FIR, por outro lado, têm um caminho linear da entrada para a saída. Após N amostras, o sinal de entrada (como um pulso Dirac) será deslocado para fora e é o fim.
Os filtros FIR são inerentemente estáveis, enquanto os filtros IIR não são necessariamente.
Existem duas classes amplas de filtros digitais, resposta implusa infinita (IIR) e resposta de impulso finito (FIR). Novamente, os filtros IIR são baseados em equações e filtros FIR em tabelas.
Os filtros IIR são mais parecidos com os filtros analógicos do mundo real. Por exemplo, considere um decaimento exponencial simples, como você obteria de um filtro passa-baixo analógico RC. A resposta de saída a uma entrada de etapa é um exponencial que se aproxima cada vez mais da entrada. Observe que esse exponencial nunca chega à saída, apenas perto o suficiente para que não nos importemos ou não possamos medir o erro. Nesse sentido, esse filtro é inifinito. Um filtro IIR tem as mesmas características.
O filtro IIR passa baixo monopolar muito comum pode ser expresso como:
FILT <- FILT + FF (NOVO - FILT)
Isso significa que cada iteração da saída se moveu uma fração fixa (FF, a "fração de filtro") da distância para a entrada. Isso é fácil de visualizar quando FF = 1/2. Se tudo for 0 e a entrada for subitamente 1 e permanecer lá (uma unidade), a saída será 1/2, 3/4, 7/8, 15/16, etc. Esta é uma série infinita. Eventualmente, o valor chegará tão perto de 1 que será expresso como 1, pois os valores digitais no computador não têm precisão infinita.
Os filtros FIR funcionam com um princípio totalmente diferente. Um fragmento recente finito do sinal de entrada é salvo, e cada um dos valores salvos é multiplicado por um coeficiente diferente; em seguida, todos os resultados são adicionados para gerar a saída do filtro para essa iteração. Na próxima iteração, o valor salvo mais antigo é descartado, os outros são deslocados para um slot mais antigo e a nova entrada é colocada no slot desocupado. O novo trecho salvo é então multiplicado pelos coeficientes, etc. Esse processo é conhecido como "convolução" e a tabela de coeficientes geralmente chamada de núcleo do filtro. Algumas coisas sofisticadas e úteis podem ser feitas com esse tipo de filtro, tornando-se criativo com os coeficientes. Esse é um tópico em si que não vou abordar agora. No entanto, como um trecho finito da entrada é armazenado na memória, qualquer parte do sinal de entrada só pode afetar a saída por um tempo finito. Depois que uma amostra de entrada é deslocada para o final do snippet armazenado, ela desaparece e não tem mais efeito na saída.
Existem livros inteiros escritos sobre esse material e você pode passar vários semestres de cursos universitários aprofundando-se nisso. Espero que minha visão geral de 30 segundos desmistifique isso o suficiente para responder à sua pergunta.
Um ponto ainda não mencionado é que os filtros IIR podem ser subdivididos em dois estilos: aqueles em que os estágios podem ser classificados, de modo que cada estágio seja inteiramente dependente de seu próprio valor anterior e dos valores dos estágios anteriores, e aqueles em que os os estágios não podem ser classificados (porque dois ou mais estágios dependem um do outro). É possível que os estágios em um filtro FIR façam referência às saídas anteriores de outros estágios, desde que possam ser classificados como no estilo anterior do IIR, e nenhum estágio se refere à sua própria saída anterior.
Se os estágios em um filtro IIR puderem ser classificados e se a magnitude total dos coeficientes de auto-feedback para um determinado estágio for menor que um, é garantido que o filtro IIR seja estável. Se, por exemplo, um estágio incluir alguma quantidade de sinal dos estágios anteriores, mais a metade do valor anterior desse estágio e 1/4 do valor anterior, menos 1/8 do valor anterior, a magnitude total da auto- o feedback será 7/8; portanto, na ausência de mais entradas de estágios inferiores, a magnitude da contribuição do auto-feedback diminuiria em 12,5% a cada iteração.
Um FIR faz sua matemática em um número finito de elementos, digamos 32 ou 12 ou algum número, mas é isso que a matemática faz, pega um número finito de elementos e executa o filtro apenas neles.
Um IIR faz suas contas em todas as amostras que você o alimenta. Se você alimentá-lo com 10 amostras e pará-lo, funcionou em 10 amostras; se você alimentá-lo com 1.000.000.000 de amostras, a matemática operou com 1.000.000.000 de amostras. E se você deixar a coisa funcionando indefinidamente, se aproximando do infinito (deixe correr para sempre), o número de elementos da mesma forma é indefinido se aproximando do infinito. Como a palavra finito se aplica claramente ao outro modelo, e o modelo IIR pretende não ter um número finito de amostras, a palavra infinito como o oposto ao finito soa melhor do que indefinido ou alguma outra palavra desse tipo.