PSD29007-Engtelecom(2020-1) - Prof. Marcos Moecke: mudanças entre as edições
Linha 767: | Linha 767: | ||
* Uso das funções [http://www.mathworks.com/help/signal/ref/buttord.html buttord], [http://www.mathworks.com/help/signal/ref/butter.html butter], [http://www.mathworks.com/help/signal/ref/cheb1ord.html cheb1ord], [http://www.mathworks.com/help/signal/ref/cheby1.html cheby1], [http://www.mathworks.com/help/signal/ref/cheb2ord.html cheb2ord], [http://www.mathworks.com/help/signal/ref/cheby2.html cheby2], [http://www.mathworks.com/help/signal/ref/ellipord.html ellipord], [http://www.mathworks.com/help/signal/ref/ellip.html ellip] para o projeto de filtros analógicos com Matlab (é necessário usar o parâmetro ''''s''''). | * Uso das funções [http://www.mathworks.com/help/signal/ref/buttord.html buttord], [http://www.mathworks.com/help/signal/ref/butter.html butter], [http://www.mathworks.com/help/signal/ref/cheb1ord.html cheb1ord], [http://www.mathworks.com/help/signal/ref/cheby1.html cheby1], [http://www.mathworks.com/help/signal/ref/cheb2ord.html cheb2ord], [http://www.mathworks.com/help/signal/ref/cheby2.html cheby2], [http://www.mathworks.com/help/signal/ref/ellipord.html ellipord], [http://www.mathworks.com/help/signal/ref/ellip.html ellip] para o projeto de filtros analógicos com Matlab (é necessário usar o parâmetro ''''s''''). | ||
*'''[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')''' | *'''[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')''' Encontra a menor ordem '''n''' é a frequência de corte '''Wn''' para um filtro Butterworth analógico, com ripple na banda passante (''bandpass'') menor que '''Rp''' dB e atenuação na banda de rejeição (''stopband'') pelo menos de '''Rs''' dB. As frequências angulares '''Wp''' e '''Ws''' são dadas em rad/s. Se Wp e Ws são escalares, o filtro será um LP ou HP. Se Wp e Ws forem vetores, o filtro será um BP ou BS. | ||
*'''[b,a] = butter(n,Wn,ftype,'s')''' | |||
*'''[b,a] = butter(n,Wn,ftype,'s')''' Projeta o filtro Butterworth analógico LP, HP, BP ou BS com frequência angular de corte '''Wn''', dependendo do valor de '''ftype''' e do número de elementos de '''Wn'''. | |||
<syntaxhighlight lang=matlab> | |||
%% Projeto de filtro passa-alta (HP) usando funções do Matlab | |||
Wp = 150; % rad/s | |||
Ws = 40; % rad/s | |||
Rp = 3; % dB | |||
Rs = 60; % dB | |||
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s') | |||
[b,a] = butter(n,Wn,'high','s'); | |||
[h,w] = freqs(b,a,logspace(1,3,1000)); | |||
semilogx(w,20*log10(abs(h)));grid on; | |||
hold on; plot([Wp Wn Ws],[-Rp -3 -Rs],'x'); hold off; | |||
title(sprintf('Filtro HP Butterworth, n = %d',n)) | |||
%% Projeto de filtro passa-faixa (BP) usando funções do Matlab | |||
Wp = [100 200]; % rad/s | |||
Ws = [50 250]; % rad/s | |||
Rp = 3; % dB | |||
Rs = 40; % dB | |||
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s'); | |||
[b,a] = butter(n,Wn,'s'); | |||
freqs(b,a,logspace(1,3,1000)) | |||
title(sprintf('Filtro BP Butterworth, n = %d',n)) | |||
</syntaxhighlight> | |||
*'''[n,Wp] = cheb1ord(Wp,Ws,Rp,Rs,'s')''' designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type I filter with cutoff angular frequencies Wp. | *'''[n,Wp] = cheb1ord(Wp,Ws,Rp,Rs,'s')''' designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type I filter with cutoff angular frequencies Wp. | ||
Linha 783: | Linha 807: | ||
:* Ver também [https://www.mathworks.com/help/signal/ug/comparison-of-analog-iir-lowpass-filters.html Comparison of Analog IIR Lowpass Filters]. | :* Ver também [https://www.mathworks.com/help/signal/ug/comparison-of-analog-iir-lowpass-filters.html Comparison of Analog IIR Lowpass Filters]. | ||
:* Uso das funções [http://www.mathworks.com/help/signal/ref/freqs.html freqs], [https://www.mathworks.com/help/signal/ref/zplane.html zplane | :* Uso das funções [http://www.mathworks.com/help/signal/ref/freqs.html freqs], [https://www.mathworks.com/help/signal/ref/zplane.html zplane] na análise da resposta em frequência de filtros analógicos. | ||
Linha 810: | Linha 834: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
:*Ver pag. 204 a 208 de <ref name="SHENOI2006"/> | :*Ver pag. 204 a 208 de <ref name="SHENOI2006"/> | ||
*Exemplos de Filtros Analógicos: | *Exemplos de Filtros Analógicos: | ||
Linha 827: | Linha 844: | ||
:::*onde <math> f_p </math> (<math> \omega_p </math>) é a frequência de passagem em Hz (rad/s), <math> f_s </math> (<math> \omega_s </math>) é a frequência de rejeição em Hz (rad/s), <math> f_0 </math> (<math> \omega_0 </math>) é a frequência central em Hz (rad/s), <math> B </math> (<math> B\omega </math>) é a largura de banda em Hz (rad/s). | :::*onde <math> f_p </math> (<math> \omega_p </math>) é a frequência de passagem em Hz (rad/s), <math> f_s </math> (<math> \omega_s </math>) é a frequência de rejeição em Hz (rad/s), <math> f_0 </math> (<math> \omega_0 </math>) é a frequência central em Hz (rad/s), <math> B </math> (<math> B\omega </math>) é a largura de banda em Hz (rad/s). | ||
:::*Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos. | :::*Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos. | ||
<!-- | |||
:* Uso das funções [http://www.mathworks.com/help/matlab/ref/semilogx.html semilogx], [http://www.mathworks.com/help/matlab/ref/semilogy.html semilogy],[http://www.mathworks.com/help/matlab/ref/logspace.html logspace], [http://www.mathworks.com/help/matlab/ref/linspace.html linspace]. | |||
:*Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design], [http://www.mathworks.com/help/signal/ug/special-topics-in-iir-filter-design.html Special Topics in IIR Filter Design]. | |||
::*Funções para projeto do filtro protótipo analógico passa-baixas: [http://www.mathworks.com/help/signal/ref/buttap.html buttap], [http://www.mathworks.com/help/signal/ref/cheb1ap.html cheb1ap], [http://www.mathworks.com/help/signal/ref/cheb2ap.html cheb2ap], [http://www.mathworks.com/help/signal/ref/ellipap.html ellipap] | |||
::*Funções de transformação de frequencia: [http://www.mathworks.com/help/signal/ref/lp2lp.html lp2bp], [http://www.mathworks.com/help/signal/ref/lp2hp.html lp2bs], lp2hp, lp2lp | |||
:*Ver pag. 208 a 218 de <ref name="SHENOI2006"/> | |||
;Aula 15 (16 set): | ;Aula 15 (16 set): | ||
Linha 858: | Linha 883: | ||
:*Ver pag. 219 a 229 de <ref name="SHENOI2006"/> | :*Ver pag. 219 a 229 de <ref name="SHENOI2006"/> | ||
:*Ver pag. 403 a 415 e 434 a 435 de <ref name="DINIZ2014"/> | :*Ver pag. 403 a 415 e 434 a 435 de <ref name="DINIZ2014"/> | ||
[http://www.mathworks.com/help/signal/ref/fvtool.html fvtool] | |||
;Aula 16 (19 set): | ;Aula 16 (19 set): |
Edição das 00h35min de 9 de abril de 2020
1 Registro on-line das aulas
1.1 Unidade 1
Unidade 1 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
profile on
profile viewer Execute no Matlab o código abaixo, e analise os 3 filtros implementados através dos seus zeros e polos. Busque tirar conclusões sobre a influência da posição dos polos e zeros (ver o gráfico do plano z) e correlacione com a resposta de frequência em magnitude (gráfico do freqz).
|
1.2 Unidade 2
Unidade 2 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Na sequência será mostrado como inicialmente projetar o filtro LP protótipo, e depois as transformações em frequência.
%%Definição do filtro
% Definindo os coeficientes do filtro
b = [1 1]; % Numerador
a = [1 1 5]; % Denominador
% Calculando os zeros (raízes do numerador) e pólos (raízes do denominador)
% Método 1 - usando a função tf2zp
[z1,p1,k]=tf2zp(b,a)
% Método 2 - obtendo as raízes
z2 = roots(b);
p2 = roots(a);
zplane(b,a);
%% Obtendo a resposta em frequência
% substitituindo a variável complexa s por jw usando a função freqz
freqs(b,a);
% Usando cálculo simbólico e plotando o gráfico com semilogx
syms s w
H(s) = (s+1)/(s^2 + s + 5);
pretty(H(1j*w))
latex(H(1j*w))
%%
ws = logspace(-2, 1, 1000);
h = H(1j*ws);
subplot(211)
plot(ws,abs(h)); grid on;
%semilogx(ws,abs(h)); grid on;
subplot(212)
plot(ws,angle(h)/pi*180); grid on;
%semilogx(ws,angle(h)/pi*180); grid on;
Os projetos de filtro Butterworth com função de transferência utilizam os polinômios de Butterworth mostrados na tabela a seguir:
1.2.1 INÌCIO DAS AULAS REMOTAS
Para o projeto dos filtros do tipo Chebyshev, são utilizados os polinômios de Chebyshev de primeira ordem, os quais são definidos pela equação trigonométrica: Os dois primeiros polinômios são facilmente calculados como: O cálculo dos demais termos pode ser feita pela relação recursiva: Portanto o polinômio de grau 2 pode ser obtido por Assim os primeiros nove polinômios de Chebyshev de primeira ordem podem ser obtidos: Esses polinômios mostram um comportamento oscilatório entre . FONTE: Polinômios de Tchebychev, Wikipedia
Para o projeto de filtros analógicos é necessário fazer as transformações de frequência indicadas abaixo, as quais devem ser consideradas no momento da determinação dos parâmetros do filtro protótipo LP.
1.2.2 ATUAL
%% Projeto de filtro passa-alta (HP) usando funções do Matlab
Wp = 150; % rad/s
Ws = 40; % rad/s
Rp = 3; % dB
Rs = 60; % dB
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')
[b,a] = butter(n,Wn,'high','s');
[h,w] = freqs(b,a,logspace(1,3,1000));
semilogx(w,20*log10(abs(h)));grid on;
hold on; plot([Wp Wn Ws],[-Rp -3 -Rs],'x'); hold off;
title(sprintf('Filtro HP Butterworth, n = %d',n))
%% Projeto de filtro passa-faixa (BP) usando funções do Matlab
Wp = [100 200]; % rad/s
Ws = [50 250]; % rad/s
Rp = 3; % dB
Rs = 40; % dB
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s');
[b,a] = butter(n,Wn,'s');
freqs(b,a,logspace(1,3,1000))
title(sprintf('Filtro BP Butterworth, n = %d',n))
%% Projeto de filtro passa-baixas usando funções do Matlab
%% Especificações do filtro
Wp =16000; Ws = 20000; Ap = 0.3; As = 20; G0= 3;
% Para analisar o filtro projetado, use fvtool(b,a) para observar plano s, resposta em magnitude, fase e atraso de grupo
%% Butterworth
[n,Wn] = buttord(Wp, Ws, Ap, As,'s')
[b,a] = butter(n,Wn, 's');
%% Chebyshev I
n = cheb1ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby1(n,Ap, Wp, 's');
%% Chebyshev II
n = cheb2ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby2(n,As, Ws, 's');
%% Elliptic - Cauer
[n, Wn] = ellipord(Wp, Ws, Ap, As,'s')
[b,a] = ellip(n,Ap,As, Wn, 's');
|
2 Avaliações
- Atividades extraclasse
AE1 - Cálculo de uma DFT de comprimento 8 |
---|
|
AE2 - Projeto de Filtros Analógico (Entrega e prazos ver Moodle) | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros analógicos: (a) projeto de um filtro protótipo analógico passa-baixas H(p); (b) transformação em frequência do filtro H(p) -> H(s), obtendo o filtro LP, HP, BP, BS, conforme o tipo de filtro desejado; Nesta avaliação é solicitado que cada equipe realize o projeto de 4 filtros.
|
- Prova escrita A1
- Entrega do Projeto Final. O projeto é avaliado nos quesitos:
- PFe - Documento de Especificação (apresentado no relatório);
- PFp - Implementação do Projeto;
- PFr - Relatório do Projeto (excluído a especificação);
- PFi - Avaliação individual do aluno no projeto (conceito subjetivo atribuído pelo professor a partir da observação e da apresentação do projeto).
3 Referências Bibliográficas
- ↑ 1,0 1,1 DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235
- ↑ 2,0 2,1 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822