Filtros Digitais Carlos Alexandre Mello Carlos Alexandre Mello – [email protected] Filtros Digitais Manipulação de Sinais Implementados em Hardware ou Software Componentes: Somadores, multiplicadores e elementos de retardo Carlos Alexandre Mello – [email protected] 2 Filtros Digitais Componentes Somador Multiplicador (ganho) Multiplicador Retardo Carlos Alexandre Mello – [email protected] 3 Filtros Digitais Exemplo Suponha um filtro com equação de diferenças definida por: y[n] = a1.y[n – 1] + a2.y[n – 2] + b.x[n] A representação em diagrama de blocos é dada por: Carlos Alexandre Mello – [email protected] 4 Filtros Digitais Função de Sistema ou Função de Transferência Relação entre a entrada e a saída de um sistema Para uma equação de diferenças: A função de sistema é: 1 Carlos Alexandre Mello – [email protected] 5 Filtros Digitais Podemos re-escrever a equação de diferenças na forma: que pode ser representada em diagrama de blocos das seguintes formas.... Carlos Alexandre Mello – [email protected] 6 Filtros Digitais Forma Direta I Carlos Alexandre Mello – [email protected] 7 Filtros Digitais Forma Direta II (menos retardos) Carlos Alexandre Mello – [email protected] 8 Filtros Digitais Classificação Os filtros são classificados quanto à sua resposta ao impulso em: Filtros FIR Finite Impulse Response Filtros IIR Infinite Impulse Response Carlos Alexandre Mello – [email protected] 9 Filtros FIR Carlos Alexandre Mello – [email protected] Filtros FIR A estrutura de um filtro FIR é bastante regular e, uma vez definidos os coeficientes do filtro, ele pode ser completamente especificado Também chamado de feed-forward Carlos Alexandre Mello – [email protected] 11 Filtros FIR De uma maneira geral, filtros FIR podem ser escritos da forma: Com função de transferência: Carlos Alexandre Mello – [email protected] 12 Filtros FIR Assim, a resposta ao impulso h(n) é: e a representação em equação de diferenças é: Carlos Alexandre Mello – [email protected] 13 Filtros FIR Exemplo: Se a entrada é: x[n] = [1, 0], considerando o sistema causal…. 1 0.5 0.5 y[0] = 0.5 0 0 Carlos Alexandre Mello – [email protected] Da mesma forma: y[1] = 0.5 14 Filtros FIR Logo, no diagrama anterior, temos: y[0] = 0,5.x[0] + 0,5.x[-1] y[1] = 0,5.x[1] + 0,5.x[0] Ou, de forma geral: y[n] = 0,5.x[n] + 0,5.x[n - 1] Carlos Alexandre Mello – [email protected] 15 Filtros FIR Exemplo: y[n] = 0,2.x[n] + 0,6.x[n – 1] Carlos Alexandre Mello – [email protected] 16 Filtros FIR Por simplicidade, podemos representar o filtro apenas com seus coeficientes: Esse diagrama representa o filtro de equação: y[n] = 1.x[n - 1] - 1.x[n] Carlos Alexandre Mello – [email protected] 17 Filtros FIR Podemos calcular o resultado da aplicação de uma entrada a um filtro de forma simples: Considere um filtro FIR de coeficientes [6, 7, 8] o qual recebe uma entrada [1, 2, 3, 4, 5]; a saída será: ..que representa exatamente uma soma de convolução… Carlos Alexandre Mello – [email protected] 18 Filtros FIR Ex: Se: h1[n] = {1, 1, 1, 1} h2[n] = {2, 0, 2} x[n] = {2, 4, 6, 8, 10} Calcule h1[n]*(h2[n]*x[n]) Calcule (h1[n]*h2[n])*x[n] >> h1 = [1, 1, 1, 1]; >> h2 = [2 0 2]; >> x = [2 4 6 8 10]; >> w = conv(h2, x) w= 4 8 16 24 32 16 20 >> y = conv(h1, w) y= 4 12 28 52 80 88 92 >> w2 = conv(h1, h2) w2 = 2 2 4 4 2 2 >> y = conv(w2, x) y= 4 12 28 52 80 88 92 Carlos Alexandre Mello – [email protected] 68 36 20 68 36 20 19 Filtros FIR Tipos de Filtros FIR: Passa-Baixa e Passa-Alta Filtros ideais Na prática, esses filtros apresentam características diferentes como ondulações e transições mais suaves... Carlos Alexandre Mello – [email protected] 20 Filtros FIR Tipos de Filtros FIR: Passa-Baixa e Passa-Alta Carlos Alexandre Mello – [email protected] 21 Filtros FIR Tipos de Filtros FIR: Passa-Baixa e Passa-Alta ripples transição suave ripples Carlos Alexandre Mello – [email protected] 22 Filtros FIR Tipos de Filtros FIR: Passa-Baixa e Passa-Alta Para analisar o comportamento de um filtro, temos que olhar para sua resposta em frequência Transformada de Fourier Suponha filtros FIR com coeficientes: [0.5 0.5]: y[n] = 0,5.x[n] + 0,5.x[n – 1] = (x[n]+x[n – 1])/2 [0.5 -0.5]: y[n] = 0,5.x[n] - 0,5.x[n – 1] = (x[n]-x[n – 1])/2 FPB chamado Filtro da Média FPA chamado Filtro da Diferença Suas respostas em frequência são: Carlos Alexandre Mello – [email protected] 23 Filtros FIR Tipos de Filtros FIR: Passa-Baixa e Passa-Alta [0.5 0.5] = FPB No MatLab: x = [0.5, 0.5]; f = fft(x,8192); freq = -5:10/8192:5-1/8192; plot(freq, abs(fftshift(f))); [0.5 -0.5] = FPA x = [0.5, -0.5]; f = fft(x,8192); freq = -5:10/8192:5-1/8192; plot(freq, abs(fftshift(f))); Carlos Alexandre Mello – [email protected] 24 Filtros FIR Tipos de Filtros FIR: Passa-Baixa e Passa-Alta Vamos analisar o FPA: y[n] = (x[n] - x[n – 1])/2 Pequenas diferenças entre as amostras resultam em valores pequenos Grandes diferenças entre as amostras resultam em valores grandes Assim, a resposta em frequência desse filtro deve atenuar mudanças suaves no sinal (como as relacionadas com as baixas frequências) e enfatizar mudanças rápidas (como as relacionadas com as altas frequências) Carlos Alexandre Mello – [email protected] 25 Filtros FIR Tipos de Filtros FIR: Notch e Passa-Faixa Carlos Alexandre Mello – [email protected] 26 Filtros FIR Para ver como é o comportamento de um filtro, devemos ver sua resposta em frequência através da Transformada de Fourier de seus coeficientes Carlos Alexandre Mello – [email protected] 27 Filtros FIR Exemplo: >> B2 = fir1(100, 0.3, ‘low'); >> x = zeros (1, 1000); >> x(50) = 1; % x é um impulso >> Y2 = fft(conv(x, B2)); % apresentamos metade apenas pois % o resto é simétrico >> half = 1:ceil(length(Y2)/2); >> plot(half/max(half), abs(Y2(half)), 'b'); Carlos Alexandre Mello – [email protected] 28 Filtros FIR Exemplo: Carlos Alexandre Mello – [email protected] 29 Filtros FIR Exemplo: >> B2 = fir1(100, 0.3, ‘high'); >> x = zeros (1, 1000); >> x(50) = 1; % x é um impulso >> Y2 = fft(conv(x, B2)); % apresentamos metade apenas pois % o resto é simétrico >> half = 1:ceil(length(Y2)/2); >> plot(half/max(half), abs(Y2(half)), 'b'); Carlos Alexandre Mello – [email protected] 30 Filtros FIR Exemplo: Carlos Alexandre Mello – [email protected] 31 Filtros FIR Exemplo: >> fdatool Carlos Alexandre Mello – [email protected] 32 Filtros FIR Carlos Alexandre Mello – [email protected] 33 Filtros FIR Carlos Alexandre Mello – [email protected] 34 Filtros FIR Fase linear Carlos Alexandre Mello – [email protected] 35 Filtros FIR Carlos Alexandre Mello – [email protected] 36 Filtros FIR Carlos Alexandre Mello – [email protected] 37 Filtros FIR Carlos Alexandre Mello – [email protected] 38 Filtros FIR Carlos Alexandre Mello – [email protected] 39 Filtros FIR /* * Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool * Generated by MATLAB(R) 7.7 and the Signal Processing Toolbox 6.10. * Generated on: 02-Apr-2010 20:47:53 */ /* * Discrete-Time FIR Filter (real) * ------------------------------* Filter Structure : Direct-Form FIR * Filter Length : 51 * Stable : Yes * Linear Phase : Yes (Type 1) */ /* General type conversion for MATLAB generated C-code */ #include "tmwtypes.h" /* * Expected path to tmwtypes.h * D:\MATLABR2008b\extern\include\tmwtypes.h */ const int BL = 51; const real64_T B[51] = { -0.0009190982084802,-0.002717696026613,-0.002486952759855, 0.003661438383488, 0.01365092523065, 0.0173511659011, 0.007665306190435,0.006554718869626, -0.00769678403705, 0.006105459421406, 0.01387391574864,0.0003508617282953, -0.01690892543669,-0.008905642749153, 0.01744112950086, 0.02074504452761, -0.01229649425194, -0.03424086590958,-0.001034529605573, 0.0477903055208, 0.02736303791485, 0.05937951883105, -0.08230702592923, 0.06718690943287, 0.3100151770902, 0.4300478803435, 0.3100151770902, 0.06718690943287, 0.08230702592923, -0.05937951883105, 0.02736303791485, 0.0477903055208, -0.001034529605573, -0.03424086590958, -0.01229649425194, 0.02074504452761, 0.01744112950086,-0.008905642749153, -0.01690892543669,0.0003508617282953, 0.01387391574864, 0.006105459421406, 0.00769678403705,-0.006554718869626, 0.007665306190435, 0.0173511659011, 0.01365092523065, 0.003661438383488, -0.002486952759855,0.002717696026613,-0.0009190982084802 }; Carlos Alexandre Mello – [email protected] 40 Filtros FIR Código VHDL Carlos Alexandre Mello – [email protected] 41 Filtros FIR Exemplo: >> [som, Fs] = wavread('a_casa.wav'); >> Fs Fs = 22050 >> soundsc(som, Fs) >> h = [1 -1]; % h = 1 –z-1 >> y = filter(h, 1, som); >> soundsc(y, Fs) Carlos Alexandre Mello – [email protected] 42 Filtros FIR Magnitude Carlos Alexandre Mello – [email protected] Fase 43 Filtros FIR Exemplo: >> [som, Fs] = wavread('a_casa.wav'); >> Fs Fs = 22050 >> soundsc(som, Fs) >> h = [1 -0.9375]; % h = 1 – 0.9375z-1 >> y = filter(h, 1, som); >> soundsc(y, Fs) Carlos Alexandre Mello – [email protected] 44 Filtros FIR Magnitude Carlos Alexandre Mello – [email protected] Fase 45 Filtros FIR Sinal original Carlos Alexandre Mello – [email protected] 46 Filtros FIR Filtro de fase linear Carlos Alexandre Mello – [email protected] 47 Filtros FIR Filtro de fase não-linear Carlos Alexandre Mello – [email protected] 48 Filtros FIR – Fase Linear Em diversas aplicações como processamento de voz ou som, filtros digitais são usados para implementar operações seletivas de frequência Assim, especificações são necessárias no domínio da frequência em termos de magnitude desejada e resposta em fase do filtro Em geral, uma resposta em fase linear na banda de passagem é desejada Carlos Alexandre Mello – [email protected] 49 Filtros FIR – Fase Linear Carlos Alexandre Mello – [email protected] 50 Filtros FIR – Fase Linear Considere um sistema LTI cuja resposta em frequência sobre um período é: onde α é um número real Tal sistema tem magnitude e fase linear: Carlos Alexandre Mello – [email protected] 51 Filtros FIR – Fase Linear A transformada de Fourier inversa de Hid(ejw) é a resposta ao impulso Carlos Alexandre Mello – [email protected] 52 Filtros FIR – Fase Linear Carlos Alexandre Mello – [email protected] 53 Filtros FIR – Fase Linear A saída desse sistema para uma entrada qualquer x[n] é: Carlos Alexandre Mello – [email protected] 54 Filtros FIR – Fase Linear Se α = nd, com nd inteiro, então: e i.e., se α = nd um inteiro, o sistema com fase linear e ganho unitário simplesmente desloca a sequência de entrada de nd amostras Carlos Alexandre Mello – [email protected] 55 Filtros FIR – Fase Linear De forma geral, um sistema será dito de fase linear generalizada se sua resposta em frequência puder ser expressa na forma: onde α e β são constantes e A(ejw) é uma função real em w Carlos Alexandre Mello – [email protected] 56 Filtros FIR – Fase Linear Por exemplo, para o filtro de fase linear: temos β = 0 e resposta ao impulso: Se ωc = π, então temos a equação anterior. Carlos Alexandre Mello – [email protected] 57 Filtros FIR – Fase Linear Quando α é um inteiro, por exemplo nd: Nesse caso, temos um sistema de fase zero Carlos Alexandre Mello – [email protected] 58 Filtros FIR – Fase Linear Se 2α é um inteiro (lembrando que α = nd), o que implica que α é um inteiro ou um inteiro mais 0.5, a resposta ao impulso tem simetria sobre α, i.e.: h[2α - n] = h[n] Carlos Alexandre Mello – [email protected] 59 Filtros FIR – Fase Linear Um sistema cuja resposta em frequência tem a forma: é chamado de sistema de fase linear generalizada já que a fase de tal sistema consiste de termos constantes adicionados á função linear -ωα Carlos Alexandre Mello – [email protected] 60 Filtros FIR – Fase Linear Ou seja, a fase linear é de forma mais geral: onde α e β são constantes reais Carlos Alexandre Mello – [email protected] 61 Filtros FIR – Fase Linear ⇒ ⇒ Como: Carlos Alexandre Mello – [email protected] 62 Filtros FIR – Fase Linear Então: Carlos Alexandre Mello – [email protected] 63 Filtros FIR – Fase Linear Logo: Carlos Alexandre Mello – [email protected] 64 Filtros FIR – Fase Linear Com isso: Carlos Alexandre Mello – [email protected] 65 Filtros FIR – Fase Linear Carlos Alexandre Mello – [email protected] 66 Filtros FIR – Fase Linear Resumindo, se β = 0 ou π, 2α = M inteiro, podemos ter: Se β = π/2 ou 3π/2, 2α = M inteiro, podemos ter h[2α - n] = h[n] h[2α - n] = -h[n] Essas duas condições garantem um sistema de fase linear generalizada Carlos Alexandre Mello – [email protected] 67 Filtros FIR – Fase Linear Causalidade implica que: n < 0 e n > M, M inteiro i.e., sistemas FIR causais têm fase linear generalizada se eles têm resposta ao impulso de comprimento (M + 1) e satisfazem: h[n] = 0, h[2α - n] = h[n] ou h[2α - n] = -h[n] Carlos Alexandre Mello – [email protected] 68 Filtros FIR – Fase Linear Especificamente, se então pode ser mostrado que h[n] = h[M – n], 0 ≤ n ≤ M, = 0, caso contrário H(ejw) = AP(ejw)e-jwM/2 onde AP(ejw) é uma função real, par e periódica em w Carlos Alexandre Mello – [email protected] 69 Filtros FIR – Fase Linear De forma similar, se segue que: h[n] = -h[M – n], 0 ≤ n ≤ M, = 0, caso contrário H(ejw) = jAI(ejw)e-jwM/2 = AI(ejw)e-jwM/2 + jπ/2 onde AI(ejw) é uma função real, ímpar e periódica em w Carlos Alexandre Mello – [email protected] 70 Filtros FIR – Fase Linear Dependendo da sua resposta ao impulso, os filtros FIR podem ser divididos em quatro classes: Sistemas FIR com fase linear do Tipo I Sistemas FIR com fase linear do Tipo II Sistemas FIR com fase linear do Tipo III Sistemas FIR com fase linear do Tipo IV Carlos Alexandre Mello – [email protected] 71 Sistemas FIR com fase linear do Tipo I Um sistema do tipo I tem resposta ao impulso simétrica 0≤n≤M com M um inteiro par h[n] = h[M – n], O atraso M/2 é um inteiro A resposta em frequência é: Carlos Alexandre Mello – [email protected] 72 Sistemas FIR com fase linear do Tipo I Considerando a condição de similaridade, essa resposta em frequência pode ser expressa como: onde a[0] = h[M/2], a[k] = 2h[(M/2) – k], k = 1, 2, 3, ..., M/2 Assim, H(ejw) tem a forma de AP(ejw)e-jwM/2 Carlos Alexandre Mello – [email protected] 73 Sistemas FIR com fase linear do Tipo II Um sistema do tipo II tem resposta ao impulso simétrica h[n] = h[M – n], 0≤n≤M com M um inteiro ímpar A resposta em frequência é: Onde: H(ejw) tem a forma de AP(ejw)e-jwM/2 Carlos Alexandre Mello – [email protected] 74 Sistemas FIR com fase linear do Tipo III Um sistema do tipo III tem resposta ao impulso anti-simétrica h[n] = -h[M – n], 0≤n≤M com M um inteiro par A resposta em frequência é: Onde: H(ejw) tem a forma de AI(ejw)e-jwM/2 + jπ/2 Carlos Alexandre Mello – [email protected] 75 Sistemas FIR com fase linear do Tipo IV Um sistema do tipo IV tem resposta ao impulso anti-simétrica h[n] = -h[M – n], 0≤n≤M com M um inteiro ímpar A resposta em frequência é: Onde: H(ejw) tem a forma de AI(ejw)e-jwM/2 + jπ/2 Carlos Alexandre Mello – [email protected] 76 Sistemas FIR com fase linear Exemplos Tipo I, M par h[n] = 1, 0 ≤ n ≤ 4, e 0, caso contrário Magnitude Fase Carlos Alexandre Mello – [email protected] 77 Sistemas FIR com fase linear Exemplos Tipo II, M ímpar h[n] = 1, 0 ≤ n ≤ 5, e 0, caso contrário Magnitude Fase Carlos Alexandre Mello – [email protected] 78 Sistemas FIR com fase linear Exemplos Tipo III, M par h[n] = δ[n] - δ[n – 2] Magnitude Fase Carlos Alexandre Mello – [email protected] 79 Sistemas FIR com fase linear Exemplos Tipo IV, M ímpar h[n] = δ[n] - δ[n – 1] Magnitude Fase Carlos Alexandre Mello – [email protected] 80 Filtros IIR Carlos Alexandre Mello – [email protected] Filtros IIR Permitem retro-alimentação (feedback) y[n] = 0.6*x[n] + 0.2*x[n-1] + 0.4*y[n – 1] Resposta a um Impulso... Diminui, nunca acaba, mas tende a zero.... Carlos Alexandre Mello – [email protected] 82 Filtros IIR y[n] = 0.6*x[n] + 0.2*x[n-1] + y[n – 1] Resposta a um Impulso... A saída nunca zera.... Carlos Alexandre Mello – [email protected] 83 Filtros IIR y[n] = 0.6*x[n] + 0.2*x[n-1] + 1.1*y[n – 1] Resposta a um Impulso... A saída cresce mesmo com entrada nula.... 84 Carlos Alexandre Mello – [email protected] 84 Filtros IIR De uma maneira geral, os filtros IIR são expressos como: Função de Transferência Carlos Alexandre Mello – [email protected] 85 Filtros IIR Forma Direta I Carlos Alexandre Mello – [email protected] 86 Filtros IIR Forma Direta II Carlos Alexandre Mello – [email protected] 87 Filtros IIR Exemplo 1: Forma Direta I Carlos Alexandre Mello – [email protected] 88 Filtros IIR Exemplo 1: Forma Direta II Carlos Alexandre Mello – [email protected] 89 Filtros IIR Exemplo 2: Conexão em Cascata Como os pólos e zeros são reais, uma estrutura em cascata tem seções com coeficientes reais. Duas estruturas em cascata equivalentes podem ser criadas para essa função: Carlos Alexandre Mello – [email protected] 90 Filtros IIR Exemplo 2: Conexão em Cascata Carlos Alexandre Mello – [email protected] 91 Filtros IIR Exemplo 2: Conexão em Cascata Carlos Alexandre Mello – [email protected] 92 Filtros IIR Exemplo 3: Conexão em Paralelo Seção de ordem 2 Carlos Alexandre Mello – [email protected] 93 Filtros IIR Exemplo 3: Conexão em Paralelo Carlos Alexandre Mello – [email protected] 94 Bibliografia Complementar Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson Learning, 2000. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989 Carlos Alexandre Mello – [email protected] 95