PROJETO DE FILTROS DIGITAIS E SIMULAÇÕES NO MATLAB

9.464 visualizações

Publicada em

PROJETO DE FILTROS DIGITAIS
E
SIMULAÇÕES NO MATLAB

Publicada em: Educação
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
9.464
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
515
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PROJETO DE FILTROS DIGITAIS E SIMULAÇÕES NO MATLAB

  1. 1. 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
  2. 2. Hermano Felipe Nilcilaine de Macedo Rodrigo Carmo Belo Horizonte 2010 Ciro Marcus Hermano Felipe Nilcilaine de Macedo Rodrigo Carmo Trabalho Final Simulações Utilizando o MatLab - T4 2
  3. 3. 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
  4. 4. PARTE I PROJETO DE FILTROS DIGITAIS 4
  5. 5. 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
  6. 6. 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/superior N = 91; % Elementos do filtro Ws = 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 retangular Janela_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 retangular figure(2); subplot(2,1,1); %Gráfico de modulo Db x Hz 6
  7. 7. 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 Hz subplot(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 filtro freq5=12000; freq6=15000; freq7=18000; %Base de tempo para os sinais senoidais t = (1:800)/Ws; %Sinais Senoidais Individuais sin1 = 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,si n7,'b'); title('Sinais gerados por várias senóides') grid on; %Geração dos Sinal Multisenoidal através da soma das várias senóides MultiSenoidal=sin1+sin2+sin3+sin4+sin5+sin6+sin7; % Filtragem dos sinais % MultiSenoidalal Filtrado: janela retangular MFJR = filter( Janela_retangular,1,MultiSenoidal ); % Resposta Temporal t=((1:800)/Ws)*1000; % Delta T em milisegundos figure(3); subplot(2,1,1); plot(t,MultiSenoidal); grid on; title('Sinal MultiSenoidal - Resposta Temporal'); subplot(2,1,2); 7
  8. 8. 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 MultiSenoidal MTFSM = abs(fft(MultiSenoidal)); %Original MTFSMFR = abs(fft(MFJR)); %Janela Retangular %Intervalo de Freqüências para metade dos 800 pontos f = 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
  9. 9. GRÁFICO 1 Resposta freqüência de um filtro com janela retangular. Fig.1 9 Frequencia de corte = 9kHz Ganho = 0dB
  10. 10. GRÁFICO 2 Senoides utilizadas para geração do sinal multisenoidal à ser aplicado nos filtros. Fig.2 Resposta temporal de um sinal multisenoidal. Fig.3 10
  11. 11. GRÁFICO 3 Gráfico de filtragem do sinal multisenoidal aplicado no filtro Passa-Alta: Fig.4 De 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
  12. 12. 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/superior N = 91; % Elementos do filtro Ws = 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 retangular Janela_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 retangular figure(2); subplot(2,1,1); %Gráfico de modulo Db x Hz 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 Hz subplot(2,1,2); plot(wr*Ws/(2*pi),angle(Hr)*180/pi);grid minor; xlabel('Hertz'); ylabel('Fase (graus)'); 12
  13. 13. %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 filtro freq5=12000; freq6=15000; freq7=18000; %Base de tempo para os sinais senoidais t = (1:800)/Ws; %Sinais Senoidais Individuais sin1 = 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,si n7,'b'); title('Sinais gerados por várias senóides') grid on; %Geração dos Sinal Multisenoidal através da soma das várias senóides MultiSenoidal=sin1+sin2+sin3+sin4+sin5+sin6+sin7; % Filtragem dos sinais % MultiSenoidalal Filtrado: janela retangular MFJR = filter( Janela_retangular,1,MultiSenoidal ); % Resposta Temporal t=((1:800)/Ws)*1000; % Delta T em milisegundos figure(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 MultiSenoidal MTFSM = abs(fft(MultiSenoidal)); %Original MTFSMFR = abs(fft(MFJR)); %Janela Retangular 13
  14. 14. %Intervalo de Freqüências para metade dos 800 pontos f = 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
  15. 15. GRÁFICO 1 Resposta freqüência de um filtro passa baixa com janela retangular. Fig.5 15 Frequencia de corte = 9kHz Ganho = 0dB
  16. 16. GRÁFICO 2 Sinal multisenoidal aplicada no filtro. Fig.6 Resposta temporal do sinal multisenoidal aplicado e resposta temporal de um filtro passa baixa. Fig.7 16
  17. 17. GRÁFICO 3 Gráfico de filtragem do sinal multisenoidal aplicado no filtro Passa-Alta: Fig.8 De 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
  18. 18. Analise os filtros projetados em relação à estabilidade. 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.
  19. 19. 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
  20. 20. PARTE II SIMULAÇÕES NO MATLAB 20
  21. 21. 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) ( )       += 48 2 1 ππ nsennx  Para K = 1 o período fundamental será de N = 8 b) ( )             += 65 cos2 ππ 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
  22. 22. 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
  23. 23. 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 degrau u = inline('t >= 0'); %cria um vetor com 21 pontos entre 0 e 20 n = linspace(0, 20, 21); % %criando a função z(n) z=n.*(u(n-1)-u(n-13)); figure stem(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))] figure stem(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 2 z_impar = [-1.*fliplr(z) z(2:length(z))]./2; figure stem(n_aux,z_impar) title('Letra b - sinal impar'); grid on %========================================= %c) %Recompondo o sinal=>somamos o sinal par com o sinal ímpar z_recomp = z_impar + z_par; figure stem(n_aux, z_recomp) title('Letra c - sinal recomposto'); grid on 23
  24. 24. Gráficos obtidos: Gráfico 1 Fig.11 Gráfico 2 Fig.12 24
  25. 25. Gráfico 3 Fig.13 Gráfico 4 Fig.14 25
  26. 26. 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 degrau u = inline('t >= 0'); n = linspace(-40, 40, 81); %========================================= %criando a funcao h(n) h=((0.9).^n).*(u(n-2)-u(n-11)); figure subplot(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); figure stem(n,y) title('SAÍDA DO SISTEMA y(n)'); axis ([-5 30 -5 12]) grid on 26
  27. 27. Gráficos obtidos: Gráfico 1 Fig.15 Gráfico 2 - Saída y(n) Fig.16 27
  28. 28. 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 1 z 5.0² 2 3 ³ 2 1 2 3 ²³ > ++ +++ = zzz zzz zH 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) figure stem(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
  29. 29. 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 1 z 5.0² 2 3 ³ 2 1 2 3 ²³ > ++ +++ = zzz zzz zH é 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
  30. 30. Gráfico 2 - Resposta ao impulso com função STEM Fig.18 30
  31. 31. 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
  32. 32. 32

×