Você está na página 1de 50

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL DEPARTAMENTO DE ENGENHARIA ELTRICA ENG04006 SISTEMAS E SINAIS

TRABALHO DE MATLAB 6 FILTROS ANALGICOS E DIGITAIS

AUGUSTO SIMON 143312 Turma C ANDREY HENKE 125180 Turma C Professora: LUCOLA CAMPESTRINI

PORTO ALEGRE, Dezembro de 2011.

INTRODUO

Objetiva-se com este trabalho projetar filtros analgicos e digitais, passabaixa, passa-faixa e passa-alta, seguindo uma tabela de parmetros propostos.

Um filtro passa-altas um filtro que permite a passagem das frequncias altas com facilidade, porm atenua (ou reduz) a amplitude das frequncias abaixo de frequncia de corte. A magnitude de atenuao para cada frequncia varia de filtro para filtro. O filtro passa-altas possui um princpio de funcionamento oposto ao do filtro passa-baixas. Ele muito utilizado para bloquear as frequncias baixas no desejadas em um sinal complexo enquanto permite a passagem das frequncias mais altas. As frequncias so consideradas 'altas' ou 'baixas' quando esto acima ou abaixo da frequncia de corte, respectivamente.

O conceito de filtro passa-baixas existe de muitas formas diferentes, incluindo os circuitos eletrnicos, algoritmos digitais para trabalhar com conjuntos de dados, barreiras acsticas, trabalhos com imagens, entre outros.

Um

exemplo

de

um

filtro

passa-faixa

analgico

circuito

RLC (um circuito resistor-indutor-capacitor). Estes filtros tambm podem ser obtidos atravs da combinao entre um filtro passa-baixas e um filtro passa-altas.

Ser aqui ento verificado, depois de realizado o projeto dos filtros, tanto no domnio frequncia como no domnio tempo, o que ocorre com um sinal depois de filtrado. Esta anlise ser realizada utilizando como sinal a ser filtrado um arquivo de udio. As ferramentas utilizadas sero grficos comparativos e comandos do matlab, como o sound, o que permitir na prtica a percepo da mudana nas caractersticas de frequncia e volume de um sinal filtrado.

1. EXERCCIO 1

Um aluno resolveu montar seu prprio conjunto de som em casa. Para isso, comprou na Alberto Bins 3 alto-falantes diferentes, sendo um deles para frequncias baixas (f < 500Hz), um para frequncias mdias (500 < f < 5000Hz) e outro para frequncias altas (f > 5kHz). A fim de obter-se uma entrada adequada para cada um deles, este aluno resolveu projetar 3 filtros de Butterworth (um passa-baixas, um passa-faixa e um passa-altas) e verificar o resultado final de seu projeto atravs do Matlab. As especificaes de cada um dos filtros so dadas na Tabela 1 e esto relacionadas magnitude em dB apresentada pelo filtro em cada faixa de frequncia. A partir das especificaes abaixo e do arquivo .wav disponvel na pgina da disciplina pede-se:

Tabela 1 - Dados dos filtros

Figura 1 - Filtro passa-baixa

Figura 2 - Filtro passa-baixa

1.1.a. Projetar os filtros analgicos que atendam s 3 especificaes da Tabela 1, mostrando passo-a-passo como esse projeto foi feito (escolha da ordem do filtro, funo de transferncia, etc). Fazer o projeto utilizando a formulao para |()|2, conforme apresentado na Figura 1, e para |()|, conforme apresentado na Figura 2. Apresentar o diagrama de polos e zeros e a resposta em frequncia de cada um dos filtros, avaliando se os filtros projetados atendem os requisitos especificados; Transformando a variao mxima na faixa de passagem e o mximo ganho na faixa de rejeio em valores absolutos, temos que quando a frequncia do sinal for P , ele dever ter no mnimo 95% de sua magnitude ao quadrado. Quando a frequncia do sinal for S , ele dever ter no mximo 5% da sua magnitude ao quadrado. Definimos 1 e como sendo as magnitudes limites de |H(j)|2, sendo 1 o limite superior, e o limite inferior do filtro. Logo = 0.05 e = 0.05 .

1.1.a.1. Projeto do Filtro Passa-Baixas Para projetar um filtro com estas caractersticas, faz-se:

P = 2fp1 = 600 rads S = 2fS1 = 1500 rads Tendo P (frequncia de corte da faixa de passagem) e S (frequncia de corte da faixa de rejeio), partiu-se para o projeto do filtro passa-baixas. A seguir definiu-se a ordem do filtro de Butterworth a ser utilizado e o valor de c (frequncia de corte). As frmulas abaixo definem estes critrios dos filtros de Butterworth: 1 [1] p 2N 1 + ( ) c

1=

1 [2] S 2N 1 + ( ) c

Isolando p na equao [1], e S na equao [2], e fazendo p S , ficamos com:


1 2N

1 p 2N = =[ ] 1 (1 )(1 ) S 1 2N ( )

( 1 )

Desta forma, torna-se possvel eliminar a varivel c dos clculos atuais, o que possibilita a obteno do valor de N. Fazendo o logaritmo nos dois lados da equao:
1 2 ( ) = ([ ] ) (1 )(1 )

log ( N=

) (1 )(1 ) p 2log ( ) S

Substituindo os valores de , , S , p : N 3,21 Utilizando |()|, conforme apresentado na Figura 2, deixam de ser utilizadas as variveis e e passam a ser utilizadas as e , no seguinte clculo: (2 2 ) ) (1 )2 (1 ) 2 ( )

( =

Similar aos limites para o caso anterior, temos para o limite superior 1 = 0.974675388 , logo = 0.025324612 e para o limite inferior P = 600 rads e S = 1500 rads. Logo: N 3,21 Como os valores de N derivam da mesma formulao, devem ser iguais e um nmero inteiro. Atribui-se a N ento o inteiro 4. Assim, a ordem do filtro de Butterworth que deve ser utilizada 4. Voltando s equaes [1] e [2], calcula-se agora o valor de c . Isolando-o em ambas, e substituindo valores, ficamos com:
p

0.223614519. Os valores de P e S so iguais ao caso anterior sendo

c = c =

1 2N ) 1

[1] c 2723 rads [2] c 3261 rads

S 1 1/2N ( )

Para a segunda formulao: p (2 2 ) ( ) (1 )2 1 ( )


1 2N

c =

c 2723 rads

1/2

3261

Pode-se utilizar qualquer valor entre estes dois. Foi escolhido ento = 2990 , de forma a equilibrar variao mxima na faixa de passagem e o
mximo ganho na faixa de rejeio.

Assim, a funo de transferncia para o filtro de Butterworh, com N=4 e = 2990 : 4 4 + 2,6131 3 + 3,4142 2 2 + 2,6131 3 + 4

() =

()

7,993 1013 4 + 7813 3 + 3,052 107 2 + 6,985 101 + 7,993 1013 4

1.1.a.2. Resposta em Frequncia do Filtro Passa-Baixas

Atravs dos comandos utilizados no software Matlab, apresentados abaixo, definiu-se um polinmio no domnio s para o filtro de Butterworth. Definiu-se o filtro passa baixas na varivel Hpb. A funo bode fornece a resposta em frequncia do filtro passa-baixas, vista na figura 3.
s=tf('s'); hpb=(7.993e13)/(s^4+7813*s^3+3.052e7*s^2+6.985e10*s+7.993e13); bode(hpb,{1e-2 1e8}); grid

Figura 3 - Filtro passa-baixa Como visto na figura 3, as frequncias inferiores a 300 Hz, 1884,96 rad/s, e superiores a 750 Hz, 18844,96 rad/s, no sofrem atenuaes que no extrapolam as especificaes do filtro. Em fp = 300 H , a magnitude do sinal aproximadamente 0,987. Em f = 750 H , a magnitude do sinal 0,175. Como no projeto a magnitude era elevada ao quadrado, se elevarmos 0,987 ao quadrado, teremos aproximadamente 0,974, ou seja, maior que o mnimo projetado, que era 0,95. Se elevarmos 0,175 ao quadrado, teremos aproximadamente 0,03, menor que o mximo projetado, que era 0,05. Ou seja, o filtro corresponde ao projetado inicialmente.

1.1.a.3. Diagrama de Polos e Zeros do Filtro Passa Baixas Atravs dos comandos de Matlab:
pzmap(hpb,'r'); grid [p z]=pzmap(hpb)

A primeira linha gera o grfico. A segunda nos retorna a localizao dos polos e zeros do filtro. Obtemos o seguinte grfico:

Onde X representam plos. Como podemos ver, h quatro plos neste filtro, localizados em: = 1143,7 + 2762,6 = 1143,7 2762,6 = 2762,8 + 1143,5 = 2762,8 1143,5 Notamos a ausncia de zeros neste filtro. Isto se deve ao fato de que no filtro passa baixas no h necessidade de ganho antes da frequncia .

1.1.a.4. Projeto do Filtro Passa-Altas: Para fazer o filtro passa-altas, comeamos fazendo um prottipo de passa-baixas, com as caractersticas do passa-altas proposto, e ento transformamos o prottipo em um passa-altas, atravs da seguinte mudana de varivel: .

Fazemos ento da seguinte maneira:

Grfico do Modelo Prottipo de Passa-Baixas

Quando a freqncia do sinal for , ele dever ter no mnimo 90% de sua magnitude ao quadrado. Quando a freqncia do sinal for , ele dever ter no mximo 10% da sua magnitude ao quadrado. Para criarmos um filtro com estas caractersticas, fazemos o seguinte: = 2 = 2 = 15000 = 6000

Estamos utilizando a notao invertida das freqncias, pois em um passa altas a freqncia de corte da faixa de passagem em 15000 freqncia de corte da faixa de rejeio 6000 . , e a

Tendo e , partimos para o projeto do filtro passa-baixas. Os passos so iguais aos que fizemos para o passa baixas. Para no termos problemas com os logaritmos, continuamos dividindo a freqncia mais baixa pela mais alta, ou seja, neste caso, .

= =[ ] 1 (1 )(1 ) 1 2 ( )
( = ) (1 )(1 ) 2 ( )

(1 )

1 2

1 2

Substituindo os valores de , , , : 2,4 Para a segunda formulao:

( =

(2 2 ) ) (1 )2 (1 ) 2 ( )

Similar aos limites para o caso anterior temos para o limite superior 1 = 0.948683298 logo = 0.051316701 e para o limite inferior 0.316227766. Os valores de 15000 Logo: 2,4 Como os valores de N derivam da mesma formulao, devem ser iguais e um nmero inteiro, portanto, arredondaremos para prximo inteiro, ou seja, 3. Assim, a ordem do filtro de Butterworth que deve ser utilizada 3. Calcularemos agora os valores de , da mesma maneira que fizemos para o filtro passa baixas, atentando para o fato de as freqncias estarem trocadas: = = 27185 32673 = 6000 . = e so iguais ao caso anterior sendo =

1 2

1 1/2 ( )

Para a segunda formulao:

27185 1 (2 2 ) 2 ( ) (1 )2 = 32673 1/2 1 ( )

Devemos utilizar qualquer valor entre estes dois. Utilizaremos = 29990 . Assim, um prottipo passa baixas, para um filtro de Butterworh, com N=3:

() =

2 2

1 + 2 + 1

Queremos um filtro passa altas, ento substitumos no prottipo passa baixas a varivel s por . Assim, com = 29990: 1 ( )3 + 2( )2 + 2( ) + 1

() = ()

3 3 + 59980 2 + 1,799 109 + 2,697 1013 3

1.1.a.5. Resposta em Frequncia do Filtro Passa Altas:

No MATLAB digitamos as seguintes linhas:


s=tf('s'); hpa=(s^3)/(s^3+59980*s^2+1.799e9*s+2.697e13); bode(hpa,{1e-1 1e9}); grid

Obtemos o seguinte grfico:

Para frequncias baixas, o filtro atenua o sinal. Para frequncias altas o sinal no atenuado. Para vermos se os parmetros que definimos no incio do projeto esto corretos, faremos algumas alteraes dentro da janela onde o diagrama de Bode est plotado. So as mesmas alteraes feitas para o passa baixas. Colocaremos o Data Cursor sobre os pontos onde a frequncia 3 kHz e 7,5 kHz:

Em

= 3 , a magnitude do sinal aproximadamente 0,256. Em

= 7,5 , a magnitude do sinal 0,96. Como no projeto a magnitude era elevada ao quadrado, se elevarmos 0,256 ao quadrado, teremos aproximadamente 0,065, ou seja, menor que o mximo projetado, que era 0,1. Se elevarmos 0,96 ao quadrado, teremos aproximadamente 0,92, maior que o mnimo projetado, que era 0,9. Ou seja, o filtro corresponde ao projetado inicialmente.

1.1.a.6. Diagrama de Polos e Zeros do Filtro Passa Altas:

Digitando no MATLAB: pzmap(hpa,r);grid [p z]=pzmap(hpa)

Obtemos o seguinte grfico:

Onde X representam plos e O representam zeros. Como podemos ver, h um zero com multiplicidade trs em = 0, e trs plos distintos neste filtro, localizados em: = 29980 = 15000 25973 = 15000 + 25973 Notamos agora presena de um zero com multiplicidade trs. Isto se deve ao fato de que no filtro passa altas, as freqncias mais baixas vo sendo cada vez menos atenuadas, na medida que crescem em direo freqncia no h necessidade de ganho antes da frequncia . Os plos servem para diminuir a influncia dos zeros gradativamente at chegar em com nenhuma atenuao.

1.1.A.7. Filtro Passa-Faixa:

Para fazer o filtro passa-faixa, devemos projetar dois filtros: um passa baixas, e outro passa altas, assim como fizemos nos dois filtros anteriores. Quando

tivermos os dois filtros prontos, multiplicamos um pelo outro e assim teremos o filtro passa faixa.

Esboo do Passa-Baixas Quando a freqncia do sinal for , ele dever ter no mnimo 95% de sua magnitude ao quadrado. Quando a freqncia do sinal for , ele dever ter no mximo 5% da sua magnitude ao quadrado.

Esboo do Prottipo Passa-Baixas

Quando a freqncia do sinal for , ele dever ter no mnimo 95% de sua magnitude ao quadrado. Quando a freqncia do sinal for , ele dever ter no mximo 5% da sua magnitude ao quadrado.

1.1.a.8. 1 Filtro Passa Baixas:

O filtro passa baixas ir deixar passar freqncias menores que 3 kHz (

= 3 )e atenuar as maiores que 7,5 kHz(

= 7,5 ).

Para criarmos um filtro com estas caractersticas, fazemos o seguinte: = 2 = 2 = 6000

= 15000

Como os valores de e so dez vezes maiores que os do projeto do filtro passa-baixas que j fizemos, assim como os valores de 1 e so os mesmos, podemos dizer que 3,21, , =4

Os valores de sero tambm 10 vezes maiores que os do primeiro filtro, assim: [1] 27236 [2] 32613

= =

1 2

1 1/2 ( )

Devemos utilizar qualquer valor entre estes dois. Utilizaremos = 29900 .

Da mesma forma que para outra formulao usada no passa-baixas 1 e : 3,21, , = 4 = 27236 1 (2 2 ) 2 ( ) (1 )2 = 32613 1/2 1 ( ) Assim, o filtro de Butterworh, com N=4 e = 29900 : 4 4 + 2,6131 3 + 3,4142 2 2 + 2,6131 3 + 4

() = 1 ()

7,993 1017 4 + 7,813 104 3 + 3,052 109 2 + 6,985 1013 + 7,993 1017 4

1.1.a.9. 2 Filtro Prottipo Passa Baixas para o filtro Passa Altas:

O filtro passa altas ir deixar passar freqncias menores que 750 Hz (

= 750 )e atenuar as menores que 300 Hz (

= 300 ). Sendo

= 0.05, = 0.05, = 0.025324612 = 0.223614519 como n o filtro passabaixas. Para criarmos um filtro com estas caractersticas, fazemos o seguinte: = 2 = 2 = 1500 = 600

Projetando este passa altas da mesma maneira que o outro passa altas, teremos:

( ) (1 )(1 ) = 3,21 2 ( ) = =
(
1

=4

1 2

2723 3261

1 1/2 ( )

Da mesma forma para a outra formulao: (2 2 ) ( ) (1 )2 (1 ) = 3,21 2 ( ) =

=4

2723 1 (2 2 ) 2 ( ) (1 )2 = 3261 1/2 1 ( )

Devemos utilizar qualquer valor entre estes dois. Utilizaremos = 2990 . Assim, um prottipo passa baixas, para um filtro de Butterworh, com N=4: 1 4 + 2,6131 3 + 3,4142 2 + 2,6131 + 1

() =

Queremos um filtro passa altas, ento substitumos no prottipo passa baixas a varivel s por . Assim, com = 2990: 1 4 3 2 ( ) + 2,6131 ( ) + 3,4142 ( ) + 2,6131 ( ) + 1

() =

2 ()

4 4 + 7813 3 + 3,052 107 2 + 6,985 101 + 7,993 1013

Multiplicando 1 () por 2 ()
7,993 1017 4 8 + 8,594 104 7 + 3,693 109 6 + 9,615 1013 5 + 1,444 1018 4 + 8,596 1021 3 + 2,952 1025 2 + 6,141 1028 + 6,388 1031

() =

1.1.a.10. Resposta em Frequncia do Filtro Passa Faixa:

No MATLAB digitamos as seguintes linhas:


s=tf('s'); hpf=(7.993e17*s^4)/(s^8+8.594e4*s^7+3.693e9*s^6+9.615e13*s^5+1.4 44e18*s^4+8.596e21*s^3+2.952e25*s^2+6.141e28*s+6.388e31); bode(hpf,{1e-1 1e9}); grid;

Obtemos o seguinte grfico:

Para frequncias baixas, o filtro atenua o sinal. Para frequncias altas o sinal no atenuado. Para uma certa faixa de freqncias o sinal se mantem sem alteraes de magnitude. Para vermos se os parmetros que definimos no incio do projeto esto corretos, faremos algumas alteraes dentro da janela onde o diagrama de Bode est plotado. So as mesmas alteraes feitas para o passa baixas. Colocaremos o Data Cursor sobre os pontos onde a frequncia 300 Hz, 750 Hz, 3 kHz e 7,5 kHz:

Em

= 300 , a magnitude do sinal aproximadamente 0,157. Em

= 7,5 , a magnitude do sinal 0,175. Em de aproximadamente 0,981. Em aproximadamente 0,987.

= 750 , a magnitude do sinal

= 3 , a magnitude do sinal de

Como no projeto a magnitude era elevada ao quadrado, se elevarmos 0,157 ao quadrado, teremos aproximadamente 0,025, ou seja, menor que o mximo

projetado,

que

era

0,05.

Se

elevarmos

0,175

ao

quadrado,

teremos

aproximadamente 0,03, tambm menor que 0,05. Ao elevarmos 0,981 ao quadrado, teremos aproximadamente 0,96, ou seja, maior que o mnimo projetado (0,95). Ao elevarmos 0,987 ao quadrado, teremos aproximadamente 0,97, tambm maior que o mnimo projetado. Ou seja, o filtro corresponde ao projeto.

1.1.a.11. Diagrama de Polos e Zeros do Filtro Passa Faixa:

Digitando no MATLAB:
pzmap(hpf,r); grid [p z]=pzmap(hpf)

Obtemos o seguinte grfico:

Onde X representam plos, e os O representam zeros. Como podemos ver, atravs do comando [p z]=pzmap(Hpf), h um zero com multiplicidade quatro em = 0, e oito plos distintos neste filtro, localizados em: = 11434 + 27626 = 11434 27626 = 27632 + 11455 = 27632 11455 = 1144 + 2763 = 1144 2763 = 2760 + 1146 = 2760 1146 Notamos agora presena de um zero com multiplicidade trs. Isto se deve ao fato de que no filtro passa faixa, as freqncias mais baixas vo sendo cada vez menos atenuadas, na medida que crescem em direo freqncia 1 = 750 . Em seguida, h uma diminuio gradativa na intensidade de ganho, at que no haja mais ganho, ou seja, passa o sinal sem nenhuma alterao. Mais adiante, h uma srie de novos plos, que fazem com que a resposta em freqncia caia infinitamente, ou seja, atenuando freqncias maiores que 2.
1.1.b. Discretizar a funo de transferncia dos filtros, utilizando a

aproximao de Tustin e utilizando o comando c2d.O perodo de amostragem deve ser o inverso da frequncia em que o sinal de udio foi gravado. 1) Filtro Passa-baixa: No MATLAB inserimos o seguinte cdigo:
s=tf('s'); hpb=(7.993e13)/(s^4+7813*s^3+3.052e7*s^2+6.985e10*s+7.993e13); [dados, fsom]=wavread('D:\bigbang.wav'); %diretrio padro onde se localiza o arquivo hpbd=c2d(hpb,inv(fsom),'Tustin')

Com este cdigo declarada a varivel s para que criar um polinmio chamado Hpb, que contenha a funo de transferncia do filtro passa-baixa. armarzenada na varivel fs o valor da freqncia de amostragem do arquivo de som, e colocado na varivel Hpbd o sistema discretizado, atravs do comando c2d. A seguinte expresso obtida:
8,675 10
7 4

H( ) =

+ 3,47 10 6 3 + 5,205 10 6 2 + 3,47 10 6 4 3,837 3 + 5,525 2 3,537 1 + 0,8498

+ 8,675 10

Sampling time: 2.0833e-005

2) Filtro Passa-alta: No MATLAB inserimos o seguinte cdigo:

s=tf('s'); hpa=(s^3)/(s^3+59980*s^2+1.799e9*s+2.697e13); [dados, fsom]=wavread('D:\bigbang.wav'); hpad=c2d(hpa,inv(fsom),'Tustin')

Com este cdigo declarada a varivel s para que possamos criar um polinmio chamado Hpa, que contm a funo de transferncia do filtro passaalta. armazenada na varivel fs o valor da frequncia de amostragem do arquivo de som, e colocado na varivel Hpad o sistema discretizado, atravs do comando c2d. obtida a seguinte expresso:
0,5404 4 1,621 2 + 1,621 1 0,5404 3 1,804 2 + 1,227 1 0,2918

( ) =

Sampling time: 2.0833e-005

3) Filtro Passa-faixa: No MATLAB inserimos o seguinte cdigo:


s=tf('s'); hpf=(7.993e17*s^4)/(s^8+8.594e4*s^7+3.693e9*s^6+9.615e13*s^5+1.4 44e18*s^4+8.596e21*s ^3+2.952e25*s^2+6.141e28*s+6.388e31); [dados, fsom]=wavread('D:\bigbang.wav'); hpfd=c2d(hpf,inv(fsom),'Tustin')

Com este cdigo declarada a varivel s para que seja criado um polinmio chamado Hpf, que contm a funo de transferncia do filtro passa altas. armazenada na varivel fs o valor da freqncia de amostragem do arquivo de som, e colocado na varivel Hpfd o sistema discretizado, atravs do comando c2d. obtida a seguinte expresso:
0,003884 8 0,01554 6 + 0,02331 4 0,01554 2 + 0,00384 6,27 + 17,27 6 27,36 5 + 27,28 4 17,55 3 + 7,108 2 1,658 1 + 0,1704
7

( ) =

Sampling time: 2.0833e05

c) Passar o sinal de udio pelos 3 filtros digitais (funo filter) e plotar tanto a resposta no tempo de cada um dos sinais resultantes. Escutar os 3 sinais resultantes e o sinal combinado utilizando a funo sound.

Tendo a funo de transferncia discreta do filtro, criado um arquivo lote (.m) e digitado o seguinte cdigo.

[dados,fsom]=wavread('D:\bigbang.wav'); dados = dados(:,1); nn=length(dados); asom = abs(fft(dados,nn))/nn; asoms = fftshift(asom); ff2 = [-nn/2:nn/2-1]*fsom/(nn);

[numpb,denpb]=tfdata(hpbd,'v'); [numpf,denpf]=tfdata(hpfd,'v'); [numpa,denpa]=tfdata(hpad,'v'); % filtrando baixas dadospb=filter(numpb,denpb,dados); asomf = abs(fft(dadospb,nn))/nn; asomsf = fftshift(asomf); figure; subplot(2,1,1) plot(ff2,asoms); axis([0 ff2(end) min(asoms) max(asoms)]) title('Sinal original dominio frequencia') subplot(2,1,2) plot(ff2,asomsf); axis([0 ff2(end) min(asomsf) max(asomsf)]) title('Sinal com filtro PB - dominio frequencia') figure; subplot(2,1,1) plot(dados) title('Sinal original - dominio tempo') subplot(2,1,2) plot(dadospb) title('Sinal com filtro PB - dominio tempo') % filtrando faixa dadospf=filter(numpf,denpf,dados); asomf = abs(fft(dadospf,nn))/nn; asomsf = fftshift(asomf); figure; subplot(2,1,1) plot(ff2,asoms); axis([0 ff2(end) min(asoms) max(asoms)]) title('Sinal original - dominio frequencia') subplot(2,1,2) plot(ff2,asomsf); axis([0 ff2(end) min(asomsf) max(asomsf)]) title('Sinal com filtro PF - dominio frequencia') figure; subplot(2,1,1) plot(dados) title('Sinal original - dominio tempo') subplot(2,1,2) plot(dadospf) title('Sinal com filtro PF - dominio tempo') % filtrando altas dadospa=filter(numpa,denpa,dados); asomf = abs(fft(dadospa,nn))/nn; asomsf = fftshift(asomf); subplot(2,1,1)

plot(ff2,asoms); axis([0 ff2(end) min(asoms) max(asomsf)]) title('Sinal original - dominio frequencia') subplot(2,1,2) plot(ff2,asomsf); axis([0 ff2(end) min(asomsf) max(asomsf)]) title('Sinal com filtro PA - dominio frequencia') figure; subplot(2,1,1) plot(dados) title('Sinal original - dominio tempo') subplot(2,1,2) plot(dadospa) title('Sinal com filtro PA - dominio tempo') % comparacao sinal original com o filtrado figure; subplot(2,1,1) plot(dados) title('Sinal Original, sem filtros') subplot(2,1,2) plot(dadospb+dadospf+dadospa) title('Soma dos sinais filtrados') asomf = abs(fft(dadospb+dadospf+dadospa,nn))/nn; asomsf = fftshift(asomf); figure; subplot(2,1,1) plot(ff2,asoms) axis([0 ff2(end)/2 min(asoms) max(asoms/2)]) title('Sinal original - dominiofrequencia') subplot(2,1,2) plot(ff2,asomsf) axis([0 ff2(end)/2 min(asomsf) max(asomsf/2)]) title('Sinal somado - dominio frequencia')

Filtro Passa-Baixas

Na resposta em frequncia do sinal passado pelo filtro Passa Baixas notado que apenas as frequncias prximas do zero esto presentes, o que ser diferente para os outros filtros. J na representao no tempo visto que o sinal se alterou de alguma forma, mas sem maiores concluses.

Filtro Passa-faixa

No filtro Passa Faixa a resposta de frequncia se afastou do zero e no se prolongou muito depois de 5k. Na representao no tempo visualizada uma alterao considervel e inclusive em relao resposta no Tempo do filtro Passabaixa, sendo o do Passa Faixas menos encorpado.

Filtro Passa-alta

J no filtro Passa Alta, com a escala da resposta de frequncia aumentada, visualizado que abaixo de 5k existe um decrscimo das componentes no sentido da frequncia decrescente, e aps isso as componentes seguem obedecendo ao espectro original. Na representao no Tempo vemos que o sinal que fica aps o Passa Altas praticamente incomparvel, e o que apresenta a menor densidade grfica. Essa variao gradual entre os 3 filtros observada na representao temporal vem do fato de que quanto maior a frequncia mais espremida no tempo ela , por isso o PA apresenta um grfico mais mirrado e o PB o mais encorpado visualmente. Abaixo demonstrado o sinal original comparado ao que apresenta a soma dos 3 sinais sados dos filtros, primeiro no domingo tempo e depois no domnio frequncia. O primeiro pouco conclusivo, pois complicado afirmar preciso entre os dois grficos, porem pode-se dizer que so bem similares. J no de frequncia os sinais tm as mesmas componentes.

1.1.d. A partir da resposta ao impulso dos filtros do item c, determinar os coeficientes do filtro FIR, justificando a escolha do nmero de coeficientes. Avaliar a resposta em frequncia dos filtros empregando a janela Retangular e de Hamming. Utilizando-se o Mtodo da Energia onde se calcula a energia total do filtro IIR e posteriormente calculam-se quantas amostras so necessrias para a energia chegar a 95% da energia total e nesse momento tem-se o filtro FIR. Para o filtro passa-baixa: Cdigo do arquiva lote:
clc clear close all s=tf('s'); hpb=(7.993e13)/(s^4+7813*s^3+3.052e7*s^2+6.985e10*s+7.993e13); %Funo de transferncia do filtro passa-baixas (Contnuo) [dados fsom]=wavread('D:\bigbang.wav'); hpbd=c2d(hpb,inv(fsom)); %Funo de transferncia do filtro passa-baixas (Discreto) Filtro IIR hf_iir=impulse(hpbd,6e-3); %Resposta ao impulso do filtro IIR n=linspace(0,6e-3,length(hf_iir)); %Mtodo da Energia energia=0; IIR for i=1:length(hf_iir) energia=energia+(hf_iir(i))^2; %Calcula a energia do sinal hf_iir at o instante atual if energia<=0.95*sum(hf_iir.^2) %Verifica se a energia acumulada do sinal at o instante atual menor ou igual a 95% da energia total hf_fir(i)=hf_iir(i); %Em caso afirmativo, a hf_iir igual a hf_fir else hf_fir(i)=0; zero end end %Em caso negativo, a hf_fir %Energia inicial do filtro

figure; stem(n,hf_iir); grid; title('Resposta ao Impulso do Filtro IIR');

A partir da figura verifica-se que aproximadamente em t=0.042 a energia do sinal chega a 95% da energia total.
1

Como o perodo de amostragem ts = 48 C=t =


t . . 42 2 8

e o nmero de coeficientes

= 202

Filtro passa-alta
clc clear close all s=tf('s'); hpa=(s^3)/(s^3+59980*s^2+1.799e9*s+2.697e13); %Funo de transferncia do filtro passa-altas (Contnuo) [dados fsom]=wavread('D:\bigbang.wav'); hpad=c2d(hpa,inv(fsom)); %Funo de transferncia do filtro passa-altas (Discreto) Filtro IIR hf_iir=impulse(hpad,6e-3);

%Resposta ao impulso do filtro IIR n=linspace(0,6e-3,length(hf_iir));

%Mtodo da Energia energia=0; %Energia inicial do filtro IIR for i=1:length(hf_iir) energia=energia+(hf_iir(i))^2; %Calcula a energia do sinal hf_iir at o instante atual if energia<=0.95*sum(hf_iir.^2) %Verifica se a energia acumulada do sinal at o instante atual menor ou igual a 95% da energia total hf_fir(i)=hf_iir(i); %Em caso afirmativo, a hf_iir igual a hf_fir Else hf_fir(i)=0; %Em caso negativo, a hf_fir zero end end

figure; stem(n,hf_iir); grid; title('Resposta ao Impulso do Filtro IIR');

A partir da figura verifica-se que aproximadamente em t=0.00040 a energia do sinal chega a 95% da energia total.
1

Como o perodo de amostragem ts = 48 C=t =


t . . 4 2 8

e o nmero de coeficientes

= 20

Filtro passa faixas


clc clear close all s=tf('s'); hpf=(7.993e17*s^4)/(s^8+8.594e4*s^7+3.693e9*s^6+9.615e13*s^5+1.4 44e18*s^4+8.596e21*s^3+2.952e25*s^2+6.141e28*s+6.388e31); %Funo de transferncia do filtro passa-altas (Contnuo) [dados fsom]=wavread('D:\bigbang.wav'); hpad=c2d(hpf,inv(fsom)); %Funo de transferncia do filtro passa-altas (Discreto) Filtro IIR hf_iir=impulse(hpad,6e-3); %Resposta ao impulso do filtro IIR n=linspace(0,6e-3,length(hf_iir));

%Mtodo da Energia energia=0; %Energia inicial do filtro IIR for i=1:length(hf_iir) energia=energia+(hf_iir(i))^2; %Calcula a energia do sinal hf_iir at o instante atual if energia<=0.95*sum(hf_iir.^2) %Verifica se a energia acumulada do sinal at o instante atual menor ou igual a 95% da energia total hf_fir(i)=hf_iir(i); %Em caso afirmativo, a hf_iir igual a hf_fir else hf_fir(i)=0; %Em caso negativo, a hf_fir zero end end

figure; stem(n,hf_iir); grid; title('Resposta ao Impulso do Filtro IIR');

A partir da figura verifica-se que aproximadamente em t=0.0013 a energia do sinal chega a 95% da energia total.
1

Como o perodo de amostragem ts = 48 C=t =


t . . 13 2 8

e o nmero de coeficientes

= 62

Avaliando a resposta em frequncia dos filtros empregando as janelas Retangular e de Hamming: - Passa-baixa

Janela Retangular

Janela de Hamming

Analisando as duas janelas percebe-se uma queda de amplitude na janela de Hamming de aproximadamente a metade. -Passa Altas

Janela Retangular

Janela de Hamming Analisando as duas janelas percebe-se um aumento de amplitude na janela de Hamming e uma dependncia maior dos termos secundrios na janela de Hamming.

- Passa Faixas

Janela Retangular

Janela de Hamming Analisando as duas janelas percebe-se uma menor dependncia dos termos secundrios na janela de Hamming alm da queda de amplitude.

Abaixo segue os cdigos do arquivo lote para gerao dos grficos: Arquivo Lote .m: -Passa baixas Janela Retangular:
s=tf('s'); hpb=(7.993e13)/(s^4+7813*s^3+3.052e7*s^2+6.985e10*s+7.993e13); [dados, fsom]=wavread('D:\bigbang.wav'); %diretrio padro onde se localiza o arquivo hpbd=c2d(hpb,inv(fsom),'Tustin') [amplitudeb,TT]=impulse(hpbd); fs=48000; tt=0:inv(fs):0.0042; nn=length(tt); xx=(amplitudeb(1:216).*1).'; %FFT yy1=fft(xx,nn); %Ajuste na escala de frequencias yy2 = abs(fft(xx,nn)); yy2s = fftshift(yy2); ff = [-nn/2:nn/2-1]*fs/(nn); %Ajuste de amplitude yy3 = abs(fft(xx,nn))/nn; yy3s = fftshift(yy3); %Ajuste FFT amp_fft = abs(fft(xx,nn))/nn; amp_shift = fftshift(amp_fft); ff = [-nn/2:nn/2-1]*fs/(nn); %plot na parte positiva do sinal figure(103); plot(ff,amp_shift); title('Resposta em Frequncia Filtro Passa-Baixa Janela Retangular'); xlabel('Frequncia(rad/s)') ylabel('Amplitude') axis([0 ff(end) min(amp_shift) max(amp_shift)])

Janela de Hamming: Arquivo Lote .m:


[amplitudeb,TT]=impulse(hpbd); fs=48000; tt=0:inv(fs):0.0045; nn=length(tt); xx=(amplitudeb(1:216).*hamming(216)).'; %FFT yy1=fft(xx,nn); %Ajuste na escala de frequencias yy2 = abs(fft(xx,nn)); yy2s = fftshift(yy2); ff = [-nn/2:nn/2-1]*fs/(nn); %Ajuste de amplitude yy3 = abs(fft(xx,nn))/nn; yy3s = fftshift(yy3); %Ajuste FFT amp_fft = abs(fft(xx,nn))/nn; amp_shift = fftshift(amp_fft); ff = [-nn/2:nn/2-1]*fs/(nn); %plot na parte positiva do sinal figure(103); plot(ff,amp_shift); title('Resposta em Frequncia Filtro Passa-Baixa Janela Hamming'); xlabel('Frequncia(rad/s)') ylabel('Amplitude') axis([0 ff(end) min(amp_shift) max(amp_shift)])

Passa-Alta Janela Retangular


s=tf('s'); hpa=(s^3)/(s^3+59980*s^2+1.799e9*s+2.697e13); [dados, fsom]=wavread('D:\bigbang.wav'); hpad=c2d(hpa,inv(fsom),'Tustin') [amplitudeb,TT]=impulse(hpbd); fs=48000; tt=0:inv(fs):0.0004; nn=length(tt); xx=(amplitudeb(1:20).*1).'; %FFT yy1=fft(xx,nn); %Ajuste na escala de frequencias yy2 = abs(fft(xx,nn)); yy2s = fftshift(yy2); ff = [-nn/2:nn/2-1]*fs/(nn); %Ajuste de amplitude yy3 = abs(fft(xx,nn))/nn; yy3s = fftshift(yy3); %Ajuste FFT amp_fft = abs(fft(xx,nn))/nn; amp_shift = fftshift(amp_fft); ff = [-nn/2:nn/2-1]*fs/(nn); %plot na parte positiva do sinal figure(103); plot(ff,amp_shift); title('Resposta em Frequncia Filtro Passa-Alta Janela Retangular'); xlabel('Frequncia(rad/s)') ylabel('Amplitude') axis([0 ff(end) min(amp_shift) max(amp_shift)])

Janela de Hamming
[amplitudeb,TT]=impulse(hpad); fs=48000; tt=0:inv(fs):0.0004; nn=length(tt); xx=(amplitudeb(1:20).*hamming(20)).'; %FFT yy1=fft(xx,nn); %Ajuste na escala de frequencias yy2 = abs(fft(xx,nn)); yy2s = fftshift(yy2); ff = [-nn/2:nn/2-1]*fs/(nn); %Ajuste de amplitude yy3 = abs(fft(xx,nn))/nn; yy3s = fftshift(yy3); %Ajuste FFT amp_fft = abs(fft(xx,nn))/nn; amp_shift = fftshift(amp_fft); ff = [-nn/2:nn/2-1]*fs/(nn); %plot na parte positiva do sinal figure(103); plot(ff,amp_shift); title('Resposta em Frequncia Filtro Passa-Alta Janela Hamming'); xlabel('Frequncia(rad/s)') ylabel('Amplitude') axis([0 ff(end) min(amp_shift) max(amp_shift)])

-Passa faixas Janela Retangular

s=tf('s'); hpf=(7.993e17*s^4)/(s^8+8.594e4*s^7+3.693e9*s^6+9.615e13*s^5+1.4 44e18*s^4+8.596e21*s^3+2.952e25*s^2+6.141e28*s+6.388e31); [dados, fsom]=wavread('D:\bigbang.wav'); hpfd=c2d(hpf,inv(fsom),'Tustin'); [amplitudeb,TT]=impulse(hpfd); fs=48000; tt=0:inv(fs):0.0013; nn=length(tt); xx=(amplitudeb(1:62).*1).'; %FFT yy1=fft(xx,nn); %Ajuste na escala de frequncias yy2 = abs(fft(xx,nn)); yy2s = fftshift(yy2); ff = [-nn/2:nn/2-1]*fs/(nn); %Ajuste de amplitude yy3 = abs(fft(xx,nn))/nn; yy3s = fftshift(yy3); %Ajuste FFT amp_fft = abs(fft(xx,nn))/nn; amp_shift = fftshift(amp_fft); ff = [-nn/2:nn/2-1]*fs/(nn); %plot na parte positiva do sinal figure(103); plot(ff,amp_shift); title('Resposta em Frequncia Filtro Passa-Faixa Janela Retangular'); xlabel('Frequncia(rad/s)') ylabel('Amplitude') axis([0 ff(end) min(amp_shift) max(amp_shift)])

Janela de Hamming
[amplitudeb,TT]=impulse(hpfd); fs=48000; tt=0:inv(fs):0.0013; nn=length(tt); xx=(amplitudeb(1:62).*hamming(62)).'; %FFT yy1=fft(xx,nn); %Ajuste na escala de frequencias yy2 = abs(fft(xx,nn)); yy2s = fftshift(yy2); ff = [-nn/2:nn/2-1]*fs/(nn); %Ajuste de amplitude yy3 = abs(fft(xx,nn))/nn; yy3s = fftshift(yy3); %Ajuste FFT amp_fft = abs(fft(xx,nn))/nn; amp_shift = fftshift(amp_fft); ff = [-nn/2:nn/2-1]*fs/(nn); %plot na parte positiva do sinal figure(103); plot(ff,amp_shift); title('Resposta em Frequncia Filtro Passa-Faixa Janela Hamming'); xlabel('Frequncia(rad/s)') ylabel('Amplitude') axis([0 ff(end) min(amp_shift) max(amp_shift)])

3. CONCLUSO

Com a realizao deste trabalho, foi possvel compreender de forma clara as possveis utilizaes dos filtros projetados, assim como sua funcionalidade.

Com os resultados obtidos, ouviu-se claramente as faixas de frequncias que no foram atenuadas, tanto com os filtros analgicos como com os digitais. E, ao somarmos os sinais que passaram pelos filtros digitais, obtivemos uma msica aparentemente idntica original. Identificamos a utilidade do uso da transformada z para filtros digitais (IIR e FIR), assim como a transformada s para os filtros analgicos (filtros de Butterworth). Ao obter-se o respectivo diagrama de bode para cada filtro, pode-se verificar a coerncia da funo de transferncia, analisando a frequncia de corte e os ganhos, tanto na faixa de passagem como na faixa de rejeio, o que similarmente ocorreu com os filtros digitais.

Você também pode gostar