Princípios básicos do projeto de filtro digital (IIR / FIR)

14

Embora eu tenha uma sólida experiência no design de mecanismos de áudio e similares, sou bastante novo no campo do Design de Filtros Digitais, particularmente nos filtros IIR e FIR. Em outras palavras, estou tentando aprender o máximo possível sobre como projetar filtros e derivar suas equações de diferença. Estou começando do básico, então, por favor, tenha paciência comigo, como eu disse, estou tentando aprender.

Aqui está a minha pergunta:

Digamos que eu queira projetar um filtro passa-baixo com um limite específico - digamos 300 Hz. Qual seria a melhor maneira de derivar matematicamente a função de transferência e, em seguida, derivar a equação de diferença específica para implementar o filtro no Formulário Direto I e no Formulário Direto II (ou apenas DF-1 por enquanto ...)?

Eu tenho algum entendimento das funções de transferência e como elas se relacionam com as equações das diferenças de algum material excelente na Web, infelizmente algumas delas pressupõem um bom conhecimento prévio, por isso é mais confuso do que útil em minha busca. Acho que preciso de um exemplo mais passo a passo que me ajude a conectar os pontos.

Então, basicamente, estou procurando ajuda com um detalhamento do processo, desde a escolha da frequência de corte até a derivação da equação da diferença.

Qualquer ajuda será muito apreciada. Eu estou familiarizado com muitos dos conceitos - resposta a impulso, DFT, a matemática por trás disso, acho que preciso de mais ajuda com o conceito de transformação z e uso de pólo / zero para projetar a função de transferência do filtro e, em seguida, como é que o cutoff freq. jogar tudo isso para finalmente derivar a equação da diferença.

Como tenho a tendência de aprender melhor com o exemplo, pensei em perguntar aqui. Muito obrigado a quem encontrar tempo para me ajudar.

bit a bit
fonte
2
Existem muitos métodos de design de filtro. Aqui estão alguns termos para você começar: o método de design da janela, o design do filtro de mínimos quadrados e o design do filtro de dois pontos (geralmente usando o algoritmo Parks-McClellan). Estes são limitados principalmente aos projetos de filtros FIR. Uma maneira comum de projetar filtros IIR é mapeando um protótipo analógico (como um filtro Butterworth) para uma aproximação de filtro digital correspondente. Isso pode ser feito usando os métodos bilineares de transformação ou invariância de impulso, por exemplo.
Jason R

Respostas:

18

O design do filtro digital é um tópico muito amplo e maduro e - como você mencionou na sua pergunta - há muito material disponível. O que eu quero tentar aqui é iniciar e tornar o material existente mais acessível. Em vez de filtros digitais, eu deveria estar falando sobre filtros de tempo discreto, porque não considerarei o coeficiente e a quantização de sinal aqui. Você já conhece os filtros FIR e IIR e também conhece algumas estruturas de filtro, como DF I e II. No entanto, deixe-me começar com alguns princípios:

Um filtro invariável no tempo linear (LTI) não recursivo pode ser descrito pela seguinte equação de diferença

(1)y(n)=h0x(n)+h1x(n1)++hN1x(nN+1)=k=0N1hkx(nk)

y(n)x(n)nhkNhkx(n)=δ(n)y(n)=hnhk. Uma vantagem importante dos filtros FIR é que eles são sempre estáveis, ou seja, para uma sequência de entrada limitada, a sequência de saída é sempre limitada. Outra vantagem é que os filtros FIR sempre podem ser realizados com uma fase exatamente linear, ou seja, eles não adicionam distorção de fase além de um atraso puro. Além disso, o problema de design é geralmente mais fácil, como veremos mais adiante.

Um filtro LTI recursivo é descrito pela seguinte equação de diferença:

2)y(n)=b0 0x(n)+b1x(n-1)+...+bMx(n-M)--uma1y(n-1)-...-umaNy(n-N)

bkumakumak porque o filtro IIR pode ser instável, ou seja, sua sequência de saída pode ser ilimitada, mesmo com uma sequência de entrada limitada.

Os filtros podem ser projetados de acordo com as especificações no domínio do tempo (amostra) ou no domínio da frequência, ou ambos. Como você mencionou uma frequência de corte na sua pergunta, presumo que você esteja mais interessado em especificações no domínio da frequência. Nesse caso, você precisa dar uma olhada nas respostas de frequência dos sistemas FIR e IIR. A resposta de frequência de um sistema é a transformada de Fourier de sua resposta de impulso, assumindo que ele exista (o que é o caso de sistemas estáveis). A resposta de frequência de um filtro FIR é

(3)H(ejθ)=k=0 0N-1hke-jkθ

θ

θ=2πffs

ffs

4)H(ejθ)=k=0 0Mbke-jθ1+k=1Numake-jθ

umak=0 0k=1,...,N

Vamos agora dar uma olhada rápida nos métodos de design de filtro. Para filtros FIR, você pode fazer uma transformação de Fourier inversa da resposta de frequência desejada para obter a resposta de impulso do filtro, que corresponde diretamente aos coeficientes do filtro. Como você aproxima a resposta desejada por uma resposta de impulso de comprimento finito, você deve aplicar uma janela suave à resposta de impulso obtida para minimizar as oscilações na resposta de frequência real devido ao fenômeno de Gibbs. Este método é chamado método de amostragem de frequência.

Para filtros padrão simples, como os filtros passa-baixo ideal, passa-alto, passa-banda ou parada de banda (e alguns outros), você pode até calcular analiticamente a resposta exata ao impulso realizando a transformação de Fourier inversa da resposta ideal desejada:

hk=12π-ππH(ejθ)ejkθdθ

É fácil avaliar essa integral para obter respostas desejadas constantes por partes, como é o caso dos filtros seletivos de frequência ideais. Isso fornecerá uma resposta de impulso não causal infinitamente longa, que precisa ser exibida e alterada para torná-la finita e causal. Este método é conhecido como design de janela.

Obviamente, existem muitos outros métodos de design de filtro FIR. Um método numérico importante é o famoso algoritmo de troca Parks-McClellan, que projeta filtros ótimos com ondulações constantes de banda passante e stopband. É um método de aproximação numérica e existem muitas implementações de software disponíveis, por exemplo, no Matlab e no Octave.

ssz

É claro que existem muitos métodos mais interessantes e úteis, dependendo do tipo de especificação que você possui, mas espero que isso o inicie e torne mais compreensível qualquer material encontrado. Um livro muito bom (e gratuito) que cobre alguns métodos básicos de design de filtros (e muito mais) é a Introdução ao processamento de sinais da Orfanidis. Você pode encontrar vários exemplos de design lá. Outro grande livro clássico é o Digital Filter Design de Parks and Burrus.

Matt L.
fonte
Uau, Matt, muito obrigado pela resposta detalhada e atenciosa. Certamente vou me aprofundar e realmente apreciar o seu tempo. Obrigado!
bitwise
Existe algum bom livro didático para o design do filtro wavelet? Estou curioso sobre esse tópico: dsp.stackexchange.com/questions/29090/… . Obrigado!
LCFactorization 04/03