Que tipo de filtro é esse? É IIR?


9

Estou tentando responder à seguinte pergunta:

O sistema é descrito pela equação:

y[n]=0.5y[n1]+x[n]0.5x[n1]

um filtro IIR ? Minha resposta é sim.

Obrigado


11
existe uma classe de filtros FIR denominados filtros "Truncated IIR" (TIIR). você pode pesquisar no Google e encontrará artigos de Julius Smith e Avery Wang. outro exemplo de filtro TIIR é o filtro Moving Sum ou Moving Average ou CIC (todos nomes bastante diferentes para a mesma coisa). o que faz desse filtro recursivo um FIR é o cancelamento sem pólo. conforme implementado, há pólos internos e, se fossem instáveis, o filtro poderia explodir por dentro, mas você não o veria na saída até que os limites numéricos fossem excedidos.
22815 Robert Bristow-Johnson

11
quais são os limites numéricos?
Yasmin preto

depende do tipo numérico (flutuante ou fixo) e da largura da palavra. esse material pode ser consultado. . (digamos, por IEEE-754 flutua para fixo, isso depende de quantos bits, , estão à esquerda do ponto binário, aproximadamente . ± 2 n I - 1nI±2nI1
Robert Bristow-johnson

obrigado novamente senhores por toda a ajuda! ajuda muito Estou feliz por ter encontrado este site
Black Yasmin

2
@ AnthonyParks: Você diz : " por que as pessoas estão complicando isso? Isso é claramente um IIR porque o primeiro termo do filtro tem uma parte de feedback ". Eu digo : " por que as pessoas não se preocupam em entender os conceitos básicos do DSP "? O filtro IIR sempre implica a forma recursiva, mas FIR não significa necessário que o filtro não seja recursivo. Essa é a única resposta correta e você está confundindo os conceitos aqui. Se essa fosse a pergunta do exame, você falharia ao dizer que é uma IIR. Oppenheim explica esse tópico em seu livro sobre DSP.
jojek

Respostas:


18

Este é o filtro FIR , embora pareça um IIR. Se você calcular os coeficientes, obtém uma resposta de impulso finita:

h=[1]

Isso acontece devido ao cancelamento de polo zero:

Y(z)0.5Y(z)z1=X(z)0.5X(z)z1

H(z)=Y(z)X(z)=10.5z110.5z1=1

Sim, pode ser complicado. Ver os coeficientes no LCCDE (Equação de Diferença dos Coeficientes Constantes Lineares) não significa necessariamente que seja um filtro IIR. Pode ser apenas um filtro FIR recursivo.y[nk]


11
obrigado pelo reconhecimento! Fui enganado em dizer IIR, sem nunca olhar atentamente para os coeficientes ... Eu apaguei minha resposta.
Fat32

Ainda assim, se você implementar as equações conforme declaradas originalmente, elas não se comportarão exatamente como H (z) = 1 devido aos efeitos finitos do comprimento das palavras (apesar de o cancelamento do pólo zero ser exato neste caso).
Oscar

Isso é verdade @Oscar, mas esses são problemas numéricos que nada têm a ver com o filtro ser F / IIR.
jojek

11
@jojek: é claro que você está completamente correto. No entanto, o uso de filtros FIR recursivos causa muitos problemas se você não tem conhecimento dessas coisas (o que muitos, mesmo os pesquisadores de "alta qualidade") têm. Portanto, meu comentário. Idealmente, também deve haver uma discussão sobre o algoritmo versus a função de transferência.
Oscar

jojek Estou lendo sua resposta desta pergunta, mas você não pode comentar. dsp.stackexchange.com/questions/17605/… posso usar uma janela diferente?
Yasmin preto

14

A resposta de Jojek está obviamente correta. Gostaria apenas de acrescentar mais algumas informações, porque muitas vezes vi os termos "IIR" e "recursivo" confusos. As seguintes implicações sempre são válidas:

IIRrecursivenon-recursiveFIR

ou seja, todo filtro IIR (ou seja, um filtro de tempo discreto com uma resposta de impulso infinitamente longa) deve ser implementado recursivamente (a menos que você tenha memória infinita disponível) e todo sistema LTI não recursivo tem uma resposta de impulso finito (novamente, a menos que você tenha memória).

No entanto, o inverso geralmente não é verdadeiro. Um filtro recursivo pode ter uma resposta de impulso finita, como é o caso do exemplo da pergunta. Outro exemplo famoso é um filtro de média móvel. Esta é uma implementação não recursiva de uma média móvel (necessariamente FIR):

y[n]=1Nk=nN+1nx[k]

y[n]=y[n1]+1N(x[n]x[nN])

11
Conciso e preciso, como sempre, +1;) Obrigado por apresentar o caso MA.
jojek

11
@jojek: Sim, acho que é um clássico que todos deveriam conhecer.
Matt L.

E enquanto eu pensava principalmente no ruído de arredondamento no comentário da resposta de jojek, para o MA, o estouro será um problema em potencial que precisa ser cuidadosamente considerado. Facilmente resolvido pela aritmética de complemento de dois e comprimento de palavra suficiente.
Oscar

11
@ Oscar: Bem, depois de fazer uma análise muito simples com precisão de ponto flutuante duplo, obtive um erro de 8.881784197001252e-16 . Isso ocorre após o processamento do equivalente a 1 ano de áudio na frequência de amostragem 44.1kHz. Os dados de entrada são um ruído gaussiano com distribuição normalizada. Aqui está o código para reproduzir o resultado ! Clique! (pode demorar três dias para ser executado). Se isso estiver correto, acredito que não há com o que se preocupar.
jojek

11
@jojek: Três coisas. 1) Eu estava me referindo ao filtro de média móvel da resposta, não ao da pergunta original. 2) Sim, isso é bom para áudio (mas não é exato, então não há razão para colocar "não" em negrito), mas prefiro que o processamento do sinal crítico de segurança funcione independentemente do sinal de entrada com propriedades sintéticas. 3) O interessante é que o filtro com o qual você simulou não terá os problemas que descrevi (como o pólo está dentro do círculo unitário, não nele), mas sempre terá erros de arredondamento, independentemente da representação (o que pode ser evitado no caso da média móvel).
Oscar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.