Sistemas e Sinais (LEIC) – Capítulo 9 - Filtros Carlos Cardeira Diapositivos para acompanhamento da bibliografia de base (Structure and Interpretation of Signals and Systems, Edward A. Lee and Pravin Varaiya), maioritariamente baseados na informação pública disponível em http://ptolemy.eecs.berkeley.edu/eecs20/index.html Definições Convolução: ( x * y )(n) x(k ) y (n k ) k ( x * y )(t ) x(s) y(t s)ds Comutativa : x*y=y*x Homogénea : (ax)*y=a(x*y) Distributiva : (x+u)*y=(x*y)+(u*y) Invariante no tempo : (DT(x))*y=DT(x*y) Exemplo (discreto) y(n)=1,-2n 2, else y(n)=0 ( x * y )(n) x(n k ) y (k ) k 2 x(n k ) 1 k 2 x(n 2) x(n 1) x( n) x(n 1) x(n 2) É uma média móvel Exemplo Exemplo (contínuo) y(t)=1,-2t 2, else y(t)=0 ( x * y )(t ) x(s) y(t s)ds s t-2 t t+2 t 2 2 s t 2 s 2 x(s)ds x(t s)ds É uma média móvel (dividindo pela largura da janela) Exemplo (contínuo) Nota: a expressão não é válida para t<0 Exemplo (flip and drag) 1 x(t) 1 y(s) 1 s=t 1 x * y (t ) x(s) y(t s)ds y(t) x(s) s x*y t Delta de Kronecker Delta de Kronecker é uma base Qualquer sinal x(n) pode ser decomposto numa combinação linear de Deltas de Kronecker Para os sistemas LTI, se eu souber a resposta ao delta de Kronecker, por linearidade posso saber a resposta do sistema a qualquer sinal Delta de Dirac Explicação intuitiva do delta de Dirac 1/ x * y (t ) x(s) x( s) y (t s)ds ( x(t ) 0 ) y(t-s) 1 x(t ) Resposta Impulsiva e Convolução (Discreto) Resposta Impulsiva e Convolução (contínuos) Exemplo Detalhe do cálculo da convolução y(t ) h(s) x(t s)ds 0 t y (t ) h( s ) x( s )ds e s x(t s )ds 0 1 t s x(t s )ds e t 2 1 t0 0t 2 t2 Demonstração intuitiva do teorema: Sistema Discreto LTI (n) ( n m) x(m) (n m) x(m) (n m) x(n) m h(n) S h( n m) x ( m) h ( n m) x(m)h(n m) y(n) m Demonstração intuitiva do teorema :Sistema Contínuo LTI (t) (t s) x( s) (t s) S h(t s) x( s)h(t s) x(s) (t s) x(t ) h(t) x(s)h(t s) y(t ) Demonstração intuitiva do teorema Quando se aplicou um x(t) qualquer a saída correspondente, tanto no caso discreto como no caso contínuo, foi dada pela convolução do sinal de entrada com a resposta impulsiva do sistema. A diferença é que nos sistemas discretos se usa o delta de Kronecker para definir a resposta impulsiva enquanto que nos sistemas contínuos se usa o delta de Dirac. Exemplos y(n) x(n) x(n 1) x(n 1) h(n) (n) (n 1) (n 1) x(n) -1 0 1 h(n) -1 0 1 Nota: sistema LTI mas não causal Exemplos x(t) h(t)=(t-T) DT y(t) Relação entre Resposta Impulsiva e Resposta em Frequência e jwt x(t ) H ( w)e jwt y (t ) (h * x)(t ) y (t ) (h * x)(t ) h( s ) x(t s )ds H ( w)e H ( w) h( s )e jws ds e jw ( t s ) jwt Exemplo: h(t ) (t T ) H ( w) h( s)e jws ds e Obtivemos o mesmo H(w) que em tempos obtiveramos por outro método jwT Exemplo: y (t ) x(t ) x(t ) (t ) 0 1 y (t ) x( s )ds ( s )ds 2 1 t t t0 t0 t0 Filtro genérico Y(n)=x(n)+0.5x(n-1)+0.7x(n-2)+y(n-1) + 0.2y(n-2) x(n) y(n) + + D x(n-1) D 0.5 1 D x(n-2) y(n-1) D 0.7 0.2 y(n-2) Quatro variáveis de estado mas poder-se-ia ter feito com menos Filtro genérico x(n) Podemos definir que são dois sistemas em cascata + w(n) y(n) + D x(n-1) D 0.5 1 D x(n-2) y(n-1) D 0.7 0.2 y(n-2) Filtro genérico x(n) A ordem pode ser invertida porque são sistemas LTI y(n) + + D D 0.5 1 D 0.2 D 0.7 Filtro genérico – número de estados De uma forma geral, se houver k atrasos de y(n) e m atrasos de x(n), o número de atrasos necessário é max (k,m) Projecto de um filtro ideal Filtro Ideal |H(w)| 1 Para implementar este filtro realizando a convolução em tempo real num DSP pretende-se saber os primeiros 128 pontos da resposta impulsiva. 0.5 0 0 0.5 1 1.5 w 2 2.5 3 1 1.5 w 2 2.5 3 pi/4 2 Fase 1 0 w 4 H ( w) 0 w 4 0 -2 0 x(t) 0.5 Filtro Ideal y(t) h(0), h(1), h(2),..., h(127) 127 y (n) h(m) x(n m) m 0 Resposta em Frequência 127 y (n) h(m) x(n m) m 0 x ( n) e jwn y (n) H ( w)e 127 H ( w) e jwn h ( m )e m 0 jw ( n m ) jwn 127 h ( m) e jwm m 0 Como sabemos o H(w) que pretendemos “só” teremos que resolver o sistema com 128 incógnitas para calcular os 128 valores de h(n). Este cálculo só se faz uma vez, porque depois são carregados em registos e em tempo real só é necessário efectuar a convolução. Cálculo da resposta impulsiva O filtro verdadeiramente vertical será impossível, mas é possível aproximarmo-nos dele. Se chamarmos Hd à resposta em frequência desejada, e Hh à resposta em frequência que se pode obter através da resposta impulsiva h, o problema de optimização a resolver é: max H d ( w) H h ( w) Se usarmos o critério do desvio máximo. Há outros critérios e uma quantidade grande de filtros já predefinidos (em Matlab, por exemplo)