Você está na página 1de 85

Filtros Digitais

Carlos Alexandre Mello

Carlos Alexandre Mello – cabm@cin.ufpe.br


Filtros Digitais

 Manipulação de Sinais
 Implementados em Hardware ou Software
 Componentes:
 Somadores, multiplicadores e elementos de
retardo

Carlos Alexandre Mello – cabm@cin.ufpe.br 2


Filtros Digitais
Componentes

Somador Multiplicador (ganho)

Multiplicador Retardo

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 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 é:

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 6


Filtros Digitais

Forma Direta I

Carlos Alexandre Mello – cabm@cin.ufpe.br 7


Filtros Digitais

Forma Direta II
(menos retardos)

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 9


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br


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 – cabm@cin.ufpe.br 11


Filtros FIR

 De uma maneira geral, filtros FIR podem ser


escritos da forma:

 Com função de transferência:

Carlos Alexandre Mello – cabm@cin.ufpe.br 12


Filtros FIR

 Assim, a resposta ao impulso h(n) é:

 e a representação em equação de
diferenças é:

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 Da mesma forma:
y[1] = 0.5

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 15


Filtros FIR
 Exemplo:

y[n] = 0,2.x[n] + 0,6.x[n – 1]

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 18


Filtros FIR
 Ex: Se:
 h1[n] = {1, 1, 1, 1} >> h1 = [1, 1, 1, 1];
>> h2 = [2 0 2];
 h2[n] = {2, 0, 2} >> x = [2 4 6 8 10];
>> w = conv(h2, x)
 x[n] = {2, 4, 6, 8, 10} w=
 Calcule h1[n]*(h2[n]*x[n]) 4 8 16 24 32 16 20
>> y = conv(h1, w)
 Calcule (h1[n]*h2[n])*x[n] y=
4 12 28 52 80 88 92 68 36 20
>> w2 = conv(h1, h2)
w2 =
2 2 4 4 2 2
>> y = conv(w2, x)
y=
4 12 28 52 80 88 92 68 36 20

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 20


Filtros FIR
Tipos de Filtros FIR: Passa-Baixa e Passa-Alta

Carlos Alexandre Mello – cabm@cin.ufpe.br 21


Filtros FIR
Tipos de Filtros FIR: Passa-Baixa e Passa-Alta

ripples

transição
suave

ripples

Carlos Alexandre Mello – cabm@cin.ufpe.br 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
 FPB chamado Filtro da Média
 [0.5 -0.5]: y[n] = 0,5.x[n] - 0,5.x[n – 1] = (x[n]-x[n – 1])/2
 FPA chamado Filtro da Diferença
 Suas respostas em frequência são:

Carlos Alexandre Mello – cabm@cin.ufpe.br 23


Filtros FIR
Tipos de Filtros FIR: Passa-Baixa e Passa-Alta

[0.5 0.5] = FPB [0.5 -0.5] = FPA

No MatLab:
x = [0.5, 0.5]; x = [0.5, -0.5];
f = fft(x,8192); f = fft(x,8192);
freq = -5:10/8192:5-1/8192; freq = -5:10/8192:5-1/8192;
plot(freq, abs(fftshift(f))); plot(freq, abs(fftshift(f)));
Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 25


Filtros FIR
Tipos de Filtros FIR: Notch e Passa-Faixa

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 28


Filtros FIR

 Exemplo:

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 30


Filtros FIR

 Exemplo:

Carlos Alexandre Mello – cabm@cin.ufpe.br 31


Filtros FIR

 Exemplo:
>> fdatool

Carlos Alexandre Mello – cabm@cin.ufpe.br 32


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br 33


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br 34


Filtros FIR

Fase linear

Carlos Alexandre Mello – cabm@cin.ufpe.br 35


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br 36


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br 37


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br 38


Filtros FIR

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 40


Filtros FIR

Código VHDL

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 42


Filtros FIR

Fase
Magnitude

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 44


Filtros FIR

Fase
Magnitude

Carlos Alexandre Mello – cabm@cin.ufpe.br 45


Filtros FIR

Sinal original

Carlos Alexandre Mello – cabm@cin.ufpe.br 46


Filtros FIR

Filtro de fase linear

Carlos Alexandre Mello – cabm@cin.ufpe.br 47


Filtros FIR

Filtro de fase não-linear

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 49


Filtros FIR – Fase Linear

Carlos Alexandre Mello – cabm@cin.ufpe.br 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 – cabm@cin.ufpe.br 51


Filtros FIR – Fase Linear
 A transformada de Fourier inversa de
Hid(ejw) é a resposta ao impulso

 A saída desse sistema para uma entrada


qualquer x[n] é:

Carlos Alexandre Mello – cabm@cin.ufpe.br 52


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 – cabm@cin.ufpe.br 53


Filtros FIR – Fase Linear
 De forma geral, um sistema será dito ser 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 – cabm@cin.ufpe.br 54


Filtros FIR – Fase Linear
 Por exemplo, para o filtro de fase linear:

 temos  = 0

Carlos Alexandre Mello – cabm@cin.ufpe.br 55


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 – cabm@cin.ufpe.br 56


Filtros FIR – Fase Linear
 Ou seja, a fase linear é de forma mais geral:

 onde  e  são constantes reais

Carlos Alexandre Mello – cabm@cin.ufpe.br 57


Filtros FIR – Fase Linear
 Causalidade implica que:
 h[n] = 0, 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 satisfaz:
 h[2 - n] = h[n]
 ou
 h[2 - n] = -h[n]

Carlos Alexandre Mello – cabm@cin.ufpe.br 58


Filtros FIR – Fase Linear
 Especificamente, se
 h[n] = h[M – n], 0  n  M,
 = 0, caso contrário
 então pode ser mostrado que
 H(ejw) = AP(ejw)e-jwM/2
 onde AP(ejw) é uma função real, par e
periódica em w

Carlos Alexandre Mello – cabm@cin.ufpe.br 59


Filtros FIR – Fase Linear
 De forma similar, se
 h[n] = -h[M – n], 0  n  M,
 = 0, caso contrário
 segue que:
 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 – cabm@cin.ufpe.br 60


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 – cabm@cin.ufpe.br 61


Sistemas FIR com fase linear do
Tipo I
 Um sistema do tipo I tem resposta ao
impulso simétrica
 h[n] = h[M – n], 0nM
 com M um inteiro par
 O atraso M/2 é um inteiro
 A resposta em frequência é:

Carlos Alexandre Mello – cabm@cin.ufpe.br 62


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 – cabm@cin.ufpe.br 63


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 – cabm@cin.ufpe.br 64
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 – cabm@cin.ufpe.br 65
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 – cabm@cin.ufpe.br 66
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 – cabm@cin.ufpe.br 67


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 – cabm@cin.ufpe.br 68


Sistemas FIR com fase linear
Exemplos

 Tipo III, M par


 h[n] = [n] - [n – 2]

Magnitude Fase

Carlos Alexandre Mello – cabm@cin.ufpe.br 69


Sistemas FIR com fase linear
Exemplos

 Tipo III, M ímpar


 h[n] = [n] - [n – 1]

Magnitude Fase

Carlos Alexandre Mello – cabm@cin.ufpe.br 70


Filtros IIR

Carlos Alexandre Mello – cabm@cin.ufpe.br


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 – cabm@cin.ufpe.br 72


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 – cabm@cin.ufpe.br 73


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....
74

Carlos Alexandre Mello – cabm@cin.ufpe.br 74


Filtros IIR
 De uma maneira geral, os filtros IIR são
expressos como:

Função de
Transferência

Carlos Alexandre Mello – cabm@cin.ufpe.br 75


Filtros IIR
Forma Direta I

Carlos Alexandre Mello – cabm@cin.ufpe.br 76


Filtros IIR
Forma Direta II

Carlos Alexandre Mello – cabm@cin.ufpe.br 77


Filtros IIR
 Exemplo 1:

Forma Direta I

Carlos Alexandre Mello – cabm@cin.ufpe.br 78


Filtros IIR
 Exemplo 1:

Forma Direta II

Carlos Alexandre Mello – cabm@cin.ufpe.br 79


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 – cabm@cin.ufpe.br 80


Filtros IIR
 Exemplo 2: Conexão em Cascata

Carlos Alexandre Mello – cabm@cin.ufpe.br 81


Filtros IIR
 Exemplo 2: Conexão em Cascata

Carlos Alexandre Mello – cabm@cin.ufpe.br 82


Filtros IIR
 Exemplo 3: Conexão em Paralelo

Seção de ordem 2

Carlos Alexandre Mello – cabm@cin.ufpe.br 83


Filtros IIR
 Exemplo 3: Conexão em Paralelo

Carlos Alexandre Mello – cabm@cin.ufpe.br 84


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 – cabm@cin.ufpe.br 85

Você também pode gostar