32
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS ENGENHARIA ELETRÔNICA E DE TELECOMUNICAÇÕES Telecomunicação XIV: Processamento de sinais PROJETO DE FILTROS DIGITAIS E SIMULAÇÕES NO MATLAB Ciro Marcus 1

PROJETO DE FILTROS DIGITAIS E SIMULAÇÕES NO MATLAB

Embed Size (px)

Citation preview

Page 1: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS

ENGENHARIA ELETRÔNICA E DE TELECOMUNICAÇÕES

Telecomunicação XIV: Processamento de sinais

PROJETO DE FILTROS DIGITAIS

E

SIMULAÇÕES NO MATLAB

Ciro Marcus

1

Page 2: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Hermano Felipe

Nilci laine de Macedo

Rodrigo Carmo

Belo Horizonte

2010

Ciro Marcus

Hermano Felipe

Nilci laine de Macedo

Rodrigo Carmo

Trabalho Final

Simulações Utilizando o MatLab - T4

2

Page 3: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Trabalho apresentado ao Curso de

Engenharia Eletrônica e de

Telecomunicações da Pontifícia

Universidade Católica de Minas

Gerais como requisito parcial de

avaliação da disciplina

Telecomunicação XIV Processamento

de sinais.

Orientadora: Maria Luiza

3

Page 4: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

PARTE I

PROJETO DE FILTROS DIGITAIS

4

Page 5: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

1. OBJETIVO

Projetos de filtros digitais não-recursivos, análise da resposta em freqüência e operação dos filtros através do programa MatLab.`

Projeto do Filtro Digital Não-Recursivo

Projeto, propriamente dito, de 2 filtros, um passa-baixas e outro passa-altas de freqüência de corte 9KHz, 91 elementos, ganho unitário na faixa de passagem, com janela retangular. Escolha a taxa de amostragem; justifique sua escolha.

Análise da Resposta em Frequência ( Diagramas de Módulo e Fase)

Traçar os gráficos da resposta em freqüência, módulo e fase, dos 2 filtros projetados indicando a freqüência de corte e ganho da faixa de passagem.

Análise de Operação:

Faça a excitação dos filtros através de um sinal multisenoidal composto por senóides de frequência pertencente e maior e/ou menor que a faixa de passagem dos filtros especificados. O sinal aplicado aos dois filtros deve ser o mesmo. Mostre graficamente os efeitos da filtragem analisando os espectros de frequência dos sinais de entrada e saída. Interprete o resultado.

5

Page 6: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

2. DESENVOLVIMENTO

Freqüência de amostragem:

De acordo com o teorema de Nyquist, a freqüência de amostragem tem que ser igual ou maior a duas vezes a maior freqüência de corte para que o sinal possa ser reconstituído com o mínimo de perda.

Utilizando o MATLAB para projetar o filtro Passa-alta.

%*************************************************************************% Engenharia Eletrônica e de Telecomunicação% % Trabalho Final - Simulações Utilizando o MatLab - T1%% Disciplina: Processamento de Sinais % Profa. Maria Luisa Grossi Vieira Santos %% Nomes: Ciro Marcus% Hermano Felipe% Nilcilaine Macedo% Rodrigo Carmo% % Dados: Filtro Passa-Alta% Frequencia de corte = 9kHz% 91 elementos % Ganho unitário na faixa de passagem% Janela retangular%************************************************************************* close all;clear all;clc; %Frequencia de corte filtro passa alta%Wn = 9000/(45000/2)= 0,4 Wn = [0.4]; % Vetor com Freq. corte inferior/superiorN = 91; % Elementos do filtroWs = 45000; % Frequencia de amostragem % De acordo com o teorema de Nyquist, a frequencia de % amostragem tem que ser igual ou maior a duas vezes a % maior frequencia de corte para que o sinal possa ser % reconstituído com o mínimo de perda. % Resposta janela retangularJanela_retangular = fir1((N-1),Wn,'high',rectwin(N)); %Calculos para Resposta em Freqüência %RETANGULAR[Hr,wr] = freqz(Janela_retangular,1);%Gráficos modulo/fase para janela retangularfigure(2);subplot(2,1,1);%Gráfico de modulo Db x Hz

6

Page 7: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

plot(wr*Ws/(2*pi),20*log10(abs(Hr)));grid minor;title('Filtro Janela Retangular - Resposta em Frequência');xlabel('Hertz');ylabel('(dB)'); %Gráfico de fase graus x Hzsubplot(2,1,2);plot(wr*Ws/(2*pi),angle(Hr)*180/pi);grid minor;xlabel('Hertz'); ylabel('Fase (graus)'); %Análise de Operação:%Sinal MultiSenoidal % Conversão do tempo discreto para intervalo de amostras (sinais discretos) %Frequências para as senóides freq1=1000;freq2=3000;freq3=6000;freq4=9000; %frequencia de corte do filtrofreq5=12000;freq6=15000;freq7=18000; %Base de tempo para os sinais senoidais t = (1:800)/Ws; %Sinais Senoidais Individuaissin1 = sin(2*pi*freq1*t);sin2 = sin(2*pi*freq2*t);sin3 = sin(2*pi*freq3*t);sin4 = sin(2*pi*freq4*t);sin5 = sin(2*pi*freq5*t);sin6 = sin(2*pi*freq6*t);sin7 = sin(2*pi*freq7*t); figure(1)plot(t,sin1,'c',t,sin2,'m',t,sin3,'y',t,sin4,'k',t,sin5,'r',t,sin6,'g',t,sin7,'b');title('Sinais gerados por várias senóides')grid on; %Geração dos Sinal Multisenoidal através da soma das várias senóidesMultiSenoidal=sin1+sin2+sin3+sin4+sin5+sin6+sin7; % Filtragem dos sinais % MultiSenoidalal Filtrado: janela retangularMFJR = filter( Janela_retangular,1,MultiSenoidal ); % Resposta Temporalt=((1:800)/Ws)*1000; % Delta T em milisegundosfigure(3);subplot(2,1,1);plot(t,MultiSenoidal);grid on;title('Sinal MultiSenoidal - Resposta Temporal');subplot(2,1,2);

7

Page 8: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

plot(t,MFJR); grid on;title('Janela Retangular do Sinal filtrado'); %Resposta em Freqüência% Modulo da transformada de Fourier para sinais %Modulo da transformada de Fourier%Para o sinal MultiSenoidalMTFSM = abs(fft(MultiSenoidal)); %OriginalMTFSMFR = abs(fft(MFJR)); %Janela Retangular %Intervalo de Freqüências para metade dos 800 pontosf = Ws*(0:399)/800; figure(4);subplot(2,1,1);plot(f,MTFSM(1:400)); grid minor;title('Sinal Multisenoidal - Resposta em Freqüência');subplot(2,1,2);plot(f,MTFSMFR(1:400)); grid minor;title('Janela Retangular do Sinal filtrado');

8

Page 9: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

GRÁFICO 1

Resposta freqüência de um filtro com janela retangular.

Fig.1

9

Frequencia de corte = 9kHz

Ganho = 0dB

Page 10: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

GRÁFICO 2

Senoides utilizadas para geração do sinal multisenoidal à ser aplicado nos filtros.

Fig.2Resposta temporal de um sinal multisenoidal.

Fig.3

10

Page 11: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

GRÁFICO 3

Gráfico de filtragem do sinal multisenoidal aplicado no filtro Passa-Alta:

Fig.4De acordo com o primeiro gráfico, tivemos aplicado na entrada do filtro 7 sinais com

freqüências distintas sendo elas 1kHz, 3kHz, 6kHz, 9kHz, 12kHz, 15kHz e 18kHz.No segundo gráfico podemos observar o resultado após a atuação do filtro passa-alta,

apenas as freqüências maiores que os 9kHz ainda estão presentes no sinal.

11

Page 12: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Utilizando o MATLAB para projetar o filtro Passa-baixa.

%*************************************************************************% Engenharia Eletrônica e de Telecomunicação% % Trabalho Final - Simulações Utilizando o MatLab - T1%% Disciplina: Processamento de Sinais % Profa. Maria Luisa Grossi Vieira Santos %% Nomes: Ciro Marcus% Hermano Felipe% Nilcilaine Macedo% Rodrigo Carmo% % Dados: Filtro Passa-Baixa% Frequencia de corte = 9kHz% 91 elementos % Ganho unitário na faixa de passagem% Janela retangular%************************************************************************* close all;clear all;clc; %Frequencia de corte filtro passa baixa%Wn = 9000/(45000/2)= 0,4 Wn = [0.4]; % Vetor com Freq. corte inferior/superiorN = 91; % Elementos do filtroWs = 45000; % Frequencia de amostragem % De acordo com o teorema de Nyquist, a frequencia de % amostragem tem que ser igual ou maior a duas vezes a % maior frequencia de corte para que o sinal possa ser % reconstituído com o mínimo de perda. % Resposta janela retangularJanela_retangular = fir1((N-1),Wn,'low',rectwin(N)); %Calculos para Resposta em Freqüência %RETANGULAR[Hr,wr] = freqz(Janela_retangular,1);%Gráficos modulo/fase para janela retangularfigure(2);subplot(2,1,1);%Gráfico de modulo Db x Hzplot(wr*Ws/(2*pi),20*log10(abs(Hr)));grid minor;title('Filtro Janela Retangular - Resposta em Frequência');xlabel('Hertz');ylabel('(dB)'); %Gráfico de fase graus x Hzsubplot(2,1,2);plot(wr*Ws/(2*pi),angle(Hr)*180/pi);grid minor;xlabel('Hertz'); ylabel('Fase (graus)');

12

Page 13: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

%Análise de Operação:%Sinal MultiSenoidal % Conversão do tempo discreto para intervalo de amostras (sinais discretos) %Frequências para as senóides freq1=1000;freq2=3000;freq3=6000;freq4=9000; %frequencia de corte do filtrofreq5=12000;freq6=15000;freq7=18000; %Base de tempo para os sinais senoidais t = (1:800)/Ws; %Sinais Senoidais Individuaissin1 = sin(2*pi*freq1*t);sin2 = sin(2*pi*freq2*t);sin3 = sin(2*pi*freq3*t);sin4 = sin(2*pi*freq4*t);sin5 = sin(2*pi*freq5*t);sin6 = sin(2*pi*freq6*t);sin7 = sin(2*pi*freq7*t); figure(1)plot(t,sin1,'c',t,sin2,'m',t,sin3,'y',t,sin4,'k',t,sin5,'r',t,sin6,'g',t,sin7,'b');title('Sinais gerados por várias senóides')grid on; %Geração dos Sinal Multisenoidal através da soma das várias senóidesMultiSenoidal=sin1+sin2+sin3+sin4+sin5+sin6+sin7; % Filtragem dos sinais % MultiSenoidalal Filtrado: janela retangularMFJR = filter( Janela_retangular,1,MultiSenoidal ); % Resposta Temporalt=((1:800)/Ws)*1000; % Delta T em milisegundosfigure(3);subplot(2,1,1);plot(t,MultiSenoidal);grid on;title('Sinal MultiSenoidal - Resposta Temporal');subplot(2,1,2);plot(t,MFJR); grid on;title('Janela Retangular do Sinal filtrado'); %Resposta em Freqüência% Modulo da transformada de Fourier para sinais %Modulo da transformada de Fourier%Para o sinal MultiSenoidalMTFSM = abs(fft(MultiSenoidal)); %OriginalMTFSMFR = abs(fft(MFJR)); %Janela Retangular

13

Page 14: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

%Intervalo de Freqüências para metade dos 800 pontosf = Ws*(0:399)/800; figure(4);subplot(2,1,1);plot(f,MTFSM(1:400)); grid minor;title('Sinal Multisenoidal - Resposta em Freqüência');subplot(2,1,2);plot(f,MTFSMFR(1:400)); grid minor;title('Janela Retangular do Sinal filtrado');

14

Page 15: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

GRÁFICO 1

Resposta freqüência de um filtro passa baixa com janela retangular.

Fig.5

15

Frequencia de corte = 9kHz

Ganho = 0dB

Page 16: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

GRÁFICO 2

Sinal multisenoidal aplicada no filtro.

Fig.6Resposta temporal do sinal multisenoidal aplicado e resposta temporal de um filtro passa baixa.

Fig.7

16

Page 17: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

GRÁFICO 3

Gráfico de filtragem do sinal multisenoidal aplicado no filtro Passa-Alta:

Fig.8De acordo com o primeiro gráfico, tivemos aplicado na entrada do filtro 7 sinais com

freqüências distintas sendo elas 1kHz, 3kHz, 6kHz, 9kHz, 12kHz, 15kHz e 18kHz.No segundo gráfico podemos observar o resultado após a atuação do filtro passa-

baixa, apenas as freqüências menores que os 9kHz ainda estão presentes no sinal.

17

Page 18: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Analise os fi l tros projetados em relação à estabil idade. Interprete.

Como vantagens, os filtros FIR possuem resposta de fase linear e estabilidade, portanto, fazendo uma análise gráfica da resposta temporal da saída do sinal multisenoidal aplicado aos filtros, percebemos que a resposta fica restrita a apenas valores finitos, não tendendo em nenhum momento a valores infinitos o que nos comprova a estabilidade dos filtros projetados.

FIG.9

18

Amplitude constante.

Page 19: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

CONCLUSÃO

O projeto do filtro digital não recursivo apresentados neste trabalho, e sua

simulação, nos facilitou o entendimento de um filtro passa-baixa e passa-alta, como

podemos ver no diagrama de espectro de freqüências onde simulamos freqüências

abaixo da freqüência de corte, e freqüências acima, para tanto, no filtro passa

baixa, o sinal multisenoidal aplicado, apenas as freqüências acima da freqüência de

corte não passaram, ou tiveram suas freqüências atenuadas em 20Db/Dec,

podendo ser atenuadas com valores até maiores como por exemplo 40Db/Dec,

dependendo dos pólos inseridos no filtro. A mesma idéia aconteceu para o filtro

passa-alta.

O uso de filtro digitais ajuda no ganho da qualidade da informação, já que o

mesmo poderá eliminar ruídos indesejados e também faixas do sinal original.

O Matlab foi um ferramenta e software utilizada no desenvolvimento de

projetos de filtro digitais com uma programação intermediária, e conseguimos obter

resultados satisfatórios afim de comprovar na teoria o funcionamento dos filtros

digitais.

19

Page 20: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

PARTE II

SIMULAÇÕES NO MATLAB

20

Page 21: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

1ª Questão: Determine se cada um dos sinais discretos, a seguir, é ou não periódico. Calcule o período fundamental, se aplicável, e plote dois períodos de cada sinal, utilizando a função "stem" do MatLab.

Para sen ou cos

Para ou

a) ( )

+=

482

1

ππnsennx

Para K = 1 o período fundamental será de N = 8

b) ( )

+=

65cos2

ππnnx

Para K = 1 o período fundamental será de N = 10

c) ( ) )n(xnx)n(x 21 +=

Devido a soma dos sinais e o período fundamental de será um valor de amostra comum entre ambos, ou seja N = 40 amostras.

21

Page 22: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

MatLab:

clc;clear all;close all;

'Questão 1_a'n=-10:1:40;x1=sin(((pi/8)*n)+pi/4).^2;subplot(3,1,1);stem(n,x1);grid on;

'Questão 1_b'n=-10:1:40;x2=cos(((pi/5)*n)+pi/6);subplot(3,1,2);stem(n,x2)grid on;

'Questão 1_c'n=-10:1:40;x3=x1+x2;subplot(3,1,3);stem(n,x3);grid on;

Gráficos obtidos:

Fig.10

22

Page 23: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

2ª Questão: Considere o sinal descrito por ))13()1(()( −−−= nununnz .a) Plote este sinal versus o tempo;b) Decomponha este sinal em seus componentes par e ímpar e plote cada uma das partes em

função do tempo;c) Reconstrua o sinal original a partir de seus componentes par e ímpar, plotando o resultado.

MatLab:

clc;clear all;close all; % 2)QUESTAO%=========================================%a)%criando a função degrauu = inline('t >= 0');%cria um vetor com 21 pontos entre 0 e 20n = linspace(0, 20, 21);% %criando a função z(n)z=n.*(u(n-1)-u(n-13));figurestem(n,z)title('Letra a') grid on%=========================================%b)%sinal par - o vetor z foi invertido, e somado ao sinal z já existente e%tudo foi dividido por 2 z_par = [fliplr(z) z(2:length(z))]./2;n_aux = [(-1).*fliplr(n) n(2:length(n))] figurestem(n_aux,z_par)title('Letra b - sinal par');grid on% %Sinal Ímparr=> juntamos o sinal z, com o resultado da funcao fliplr(z)%com amplitude invertida e dividimos tudo por 2z_impar = [-1.*fliplr(z) z(2:length(z))]./2;figurestem(n_aux,z_impar)title('Letra b - sinal impar');grid on%=========================================%c)%Recompondo o sinal=>somamos o sinal par com o sinal ímparz_recomp = z_impar + z_par;figurestem(n_aux, z_recomp)title('Letra c - sinal recomposto');grid on

23

Page 24: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Gráficos obtidos:

Gráfico 1

Fig.11Gráfico 2

Fig.12

24

Page 25: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Gráfico 3

Fig.13

Gráfico 4

Fig.14

25

Page 26: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

3ª Questão: Utilizando a função "conv" do MatLab, obtenha a saída do sistema que tem como resposta ao impulso ( ) { })11()2(9,0)( −−−= nununh n , quando em sua entrada for aplicado o sinal { })15()(2)( −−= nununx . Plote em um mesmo gráfico (utilizando as funções "subplot" e "stem") x(n) e h(n), de forma que os sinais possam ser completamente visualizados. Plotar a saída y(n).

MatLab:

clc;clear all;close all; % 3)QUESTAO%========================================= %criando a função degrauu = inline('t >= 0');n = linspace(-40, 40, 81);%=========================================%criando a funcao h(n)h=((0.9).^n).*(u(n-2)-u(n-11));figuresubplot(2,1,1)stem(n,h)title('RESPOSTA AO IMPULSO h(n)');axis ([-5 15 -0.5 1])grid on%=========================================%criando a funcao x(n)x= 2*(u(n)-u(n-15));subplot(2,1,2)stem(n,x)title('SINAL APLICADO x(n)');axis ([-5 19 -0.5 2.5])grid on%========================================= %fazendo a convolução de h(n) e x(n) e jogando o resultado em y(n)y = conv(h,x); % o vetor resultado da funcao conv tem o TAMANHO DO VETOR H + TAMANHO DO% VETOR X -1%entao o eixo n tem que ir de -(TAMANHO DO VETOR H + TAMANHO DO VETOR X)/2%ate (TAMANHO DO VETOR H + TAMANHO DO VETOR X)/2 -1 n = linspace(-1*(length(h)+length(x))/2, ((length(h)+length(x))/2)-1, length(h)+length(x)-1);figurestem(n,y)title('SAÍDA DO SISTEMA y(n)');axis ([-5 30 -5 12])grid on

26

Page 27: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Gráficos obtidos:

Gráfico 1

Fig.15

Gráfico 2 - Saída y(n)

Fig.16

27

Page 28: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

4ª Questão: Utilize o comando "residuez" do MatLab para fazer a expansão em frações parciais da função de transferência abaixo. Em seguida, obtenha a resposta ao impulso do sistema. Analise se o sistema é causal e/ou estável, justifique suas respostas.

( )2

1z

5.0²2

2

1

2

3²³

>++

+++=

zzz

zzzzH

MatLab:

clc;clear all;close all; num=[1 1 3/2 1/2];den=[1 3/2 1/2]; [R,P,K]=residuez(num, den)z=tf('s');tf=(z^3+z^2+(3/2)*z+(1/2))/(z^3+(3/2)*z^2+(1/2)*z);[y,t]=impulse(tf);impulse(tf)figurestem(t,y)axis([-2 10 -2 2])grid on

Expansão em frações parciais:

Resultado da função residuez

R =

2 -1

P =

-1.0000 -0.5000

K =

0 1

Segundo o HELP DO MATLAB

28

Page 29: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

B(z) r(1) r(n) ---- = ------------ +... ------------ + k(1) + k(2)z^(-1) ... A(z) 1-p(1)z^(-1) 1-p(n)z^(-1)

Logo:

B(z) 2 (-1) 1 ---- = ------------ + ----------------- + ---------------- A(z) 1-(-1)z^(-1) 1-(-0.5) z^2

O sistema composto pela função de transferência ( )2

1z

5.0²2

2

1

2

3²³

>++

+++=

zzz

zzzzH é

causal, pois é um sistema unilateral direito e não exclui o infinito e é um sistema estável, uma vez que a circunferência unitária está contida na região de convergência.

Gráficos obtidos:

Gráfico 1 - Resposta ao impulso

Fig17

29

Page 30: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Gráfico 2 - Resposta ao impulso com função STEM

Fig.18

30

Page 31: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

Referências Bibliográficas:

• DINIZ, P.S.R & outros: Processamento Digital de Sinais - Projeto e Análise de Sistemas; Bookman; 2004.

• S. HAYKIN & B. V. VEEN: Sinais e Sistemas; Bookman; 2001.• S. D. STEARNS & R. A. DAVID: Signal Processing Algorithms in MatLab; 1996.• PROAKIS, J.G. & MANOLAKIS: D.G.: Digital Signal Processing - Principles, Algorithms and

Applications; McMillan Publishing Co., 1992.

31

Page 32: PROJETO DE FILTROS DIGITAIS  E SIMULAÇÕES NO MATLAB

32