Mudanças entre as edições de "PSD29007-Engtelecom(2020-1) - Prof. Marcos Moecke"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 1 019: Linha 1 019:
 
:::8:15   
 
:::8:15   
 
:::⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢  |  0% (0)
 
:::⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢  |  0% (0)
 +
 +
===Unidade 3===
 +
{{collapse_top | expand=true | Unidade 3 - Filtros FIR}}
 +
;Aula 16 (21 mai):
 +
*Filtros Digitais: Filtros FIR
 +
:*Filtros de fase linear: simétricos e antisimétricos (Tipo 1, 2, 3 e 4)
 +
:*Filtros de fase linear: propriedades (respostas em frequência possíveis, distribuição dos zeros em simetria quadrantal)
 +
* Observar as propriedades dos FIR tipo 1, 2, 3 e 4.  Observe a resposta de frequência, fase, atraso de grupo, coeficientes e diagrama de polos e zeros dos filtros abaixo.
 +
 +
<syntaxhighlight lang=matlab>
 +
N = 10;
 +
bi = 2*(rand(1,N)-0.5)
 +
%% Tipo I - LP, HP, BS, BP
 +
b = [bi (2*rand(1,1)-0.5) flip(bi)];
 +
...
 +
%% Tipo II - LP, BP
 +
% tem um zero em -1
 +
b = [bi  flip(bi)];
 +
...
 +
 +
%% Tipo III - BP
 +
% tem um zero em 1  e -1
 +
b = [bi  0 -flip(bi)];
 +
...
 +
 +
%% Tipo IV - BP, HP
 +
% tem um zero em 1 
 +
b = [bi  -flip(bi)];
 +
...
 +
</syntaxhighlight>
 +
<center>
 +
[[Arquivo:FIR_tipo1.png | 800px]]
 +
<br>
 +
Figura 1 - Propriedades do filtro FIR de fase linear (Tipo 1)
 +
</center>
 +
 +
<!--
 +
;Aula 17 e 18  (26 e 30 set)
 +
:*Coeficientes da série de Fourier de filtros ideias: LP, HP, BP, BS
 +
::*Passa-baixas (''Low-pass'')
 +
::<math>c_\text{LP}(n) = \left \{ \begin{matrix} \frac{\omega_c}{\pi}; & \qquad n = 0 \\ \frac {\sin (\omega_c n)}{\pi n}; & \qquad \left | n \right | > 0 \end{matrix}\right. </math>
 +
::*Passa-altas (''High-pass'')
 +
::<math>c_\text{HP}(n) = \left \{ \begin{matrix} 1-\frac{\omega_c}{\pi}; \qquad n = 0 \\ -\frac {\sin (\omega_c n)}{\pi n}; \qquad \left | n \right | > 0 \end{matrix}\right. </math>
 +
::*Passa-faixa (''Band-pass'')
 +
::<math>c_\text{BP}(n) = \left \{ \begin{matrix} \frac{\omega_{c2}-\omega_{c1}}{\pi}; \qquad n = 0 \\ \frac {\sin (\omega_{c2} n)- \sin (\omega_{c1} n)}{\pi n}; \qquad \left | n \right | > 0 \end{matrix}\right. </math>
 +
::*Rejeita-banda (''Band-stop'')
 +
::<math>c_\text{BS}(n) = \left \{ \begin{matrix} 1-\frac{\omega_{c2}-\omega_{c1}}{\pi}; \qquad n = 0 \\ -\frac {\sin (\omega_{c2} n)- \sin (\omega_{c1} n)}{\pi n}; \qquad \left | n \right | > 0 \end{matrix}\right. </math>
 +
:*Janela retangular, fenômeno de Gibbs
 +
 +
:*Estudar no Matlab as funções [http://www.mathworks.com/help/signal/ref/wintool.html wintool], [http://www.mathworks.com/help/signal/ref/wvtool.html wvtool], [http://www.mathworks.com/help/signal/ref/window.html window]
 +
 +
:*Ver pag. 249 a 256 de <ref name="SHENOI2006"/>
 +
:*Ver [https://www.mathworks.com/help/signal/ug/fir-filter-design.html FIR Filter Design]
 +
 +
:*Uso de funções de janelamento temporal no projeto de filtros digitais.
 +
:*Tipos de janelas temporais usadas no projeto de filtros digitais.
 +
::*Retangular
 +
::<math>w(n)=1; \qquad -M \le n \le M </math>
 +
 +
::*Bartlett
 +
::<math>w(n)= 1 - \frac{\left | n \right |}{M+1}; \qquad -M \le n \le M  </math>
 +
 +
::*Hanning
 +
::<math>w(n) = 0.5 + 0.5 \cos \left( \frac{2\pi n}{2M+1} \right),  -M \le n \le M</math>
 +
 +
::*Hamming
 +
::<math>w(n) = 0.54 + 0.46 \cos\left(\frac{2\pi n}{2M+1}\right); \qquad -M \le n \le M</math>
 +
 +
::*Blackman
 +
::<math>w(n) = 0.42 + 0.5 \cos\left(\frac{2\pi n}{2M+1}\right) + 0.08\cos\left(\frac{4\pi n}{2M+1}\right); \qquad -M \le n \le M</math>
 +
* em todas as janelas <math>w\left ( n \right ) = 0 </math> quando <math> \left | n \right | \ge M</math>
 +
::onde <math>M </math>  é <math>N/2</math> para <math>N</math> par e <math>(N+1)/2</math> para <math>N</math> impar
 +
*Uso de janelas fixas no Matlab : [http://www.mathworks.com/help/signal/ref/rectwin.html rect], [http://www.mathworks.com/help/signal/ref/triang.html triang], [http://www.mathworks.com/help/signal/ref/bartlett.html bartlett], [http://www.mathworks.com/help/signal/ref/hann.html hann], [http://www.mathworks.com/help/signal/ref/hamming.html hamming], [http://www.mathworks.com/help/signal/ref/blackman.html blackman], [http://www.mathworks.com/help/signal/ref/blackmanharris.html blackmanharris], [http://www.mathworks.com/help/signal/ref/nuttallwin.html nuttall].
 +
::ver também [http://mathworld.wolfram.com/ApodizationFunction.html apodization function]
 +
<syntaxhighlight lang=matlab>
 +
L = 64;
 +
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
 +
</syntaxhighlight>
 +
 +
;Tabela 5.1:
 +
{| class="wikitable"  border="1" cellpadding="3" cellspacing="0" style="text-align:center; font-size:100%" bgcolor="#efefef"
 +
! scope="col" width=25% align="center"| Janela
 +
! scope="col" width=10% align="center"| <math>A_{sl}</math>
 +
! scope="col" width=10% align="center"| <math>A_{s}</math>
 +
! scope="col" width=10% align="center"| <math>\Delta \omega</math>
 +
{{tabFIRwindow | Retangular | 13.3| 20.33 | 0.92<math>\pi</math>/M }}
 +
{{tabFIRwindow | Triangular | 26.6| 27.41 |  }}
 +
{{tabFIRwindow | Bartlett | 26.5| 27.48 | }}
 +
{{tabFIRwindow | Hann | 31.5| 44.03 | 3.11<math>\pi</math>/M}}
 +
{{tabFIRwindow | Bartlett-Hanning | 35.9| 40.77| }}
 +
{{tabFIRwindow | Hamming | 42.5| 54.08 | 3.32<math>\pi</math>/M}}
 +
{{tabFIRwindow | Bohman | 46.0| 51.84 | 7.01<math>\pi</math>/M}}
 +
{{tabFIRwindow | Parzen | 53.1| 56.89 |}}
 +
{{tabFIRwindow | Blackman | 58.1| 75.25 | 5.56<math>\pi</math>/M}}
 +
{{tabFIRwindow | Flat Top | 88.0| 106.3| }}
 +
{{tabFIRwindow | Blackman-Harris | 92.1| 108.8 |}}
 +
{{tabFIRwindow | Nutfall | 93.8| 109.7|}}
 +
|}
 +
:*Dados acima obtidos para um filtro passa baixas de ordem N = 64 com <math>\omega_{c} = 0.5 \pi</math>
 +
:*Projeto de filtro FIR utilizando janelas temporais fixas.
 +
 +
::* Exemplo de projeto
 +
Projetar um filtro passa baixas usando uma janela temporal fixa (verificar a janela que atende a especificação)
 +
wp = 0.2*pi; Ap = 0.2 dB; Gp = 0 dB
 +
ws = 0.3*pi; As = 60 dB;
 +
::* Informar qual o tipo de janela, a ordem obtida, e o valor de ''wc'' do projeto final
 +
 +
::* Exemplo de projeto
 +
Projetar um filtro LP usando uma janela temporal fixa (hamming, bartlett-hanning, hanning).
 +
wp = 0.4*pi; Ap = 1 dB; Gp = 0 dB
 +
ws = 0.6*pi; As = 40 dB;
 +
::* Comparar os 3 tipos de janela, a ordem obtida, e o valor de ''wc'' em cada projeto.
 +
 +
:: Use como uma estimativa inicial os valores da Tabela 5.1 pag. 268.
 +
::* PASSO 1 - Escolher o tipo de janela de acordo com a atenuação do lóbulo lateral Asl e As.
 +
::* PASSO 2 - Estimar a ordem N1 do filtro considerando os parâmetros Dw
 +
::* PASSO 3 - Calcule os coeficientes clp do filtro LP , calcule os valores da janela w e obtenha a resposta ao impulso do filtro h = clp * w.
 +
::* PASSO 4 - Ajuste o ganho do filtro para que a resposta na banda de passagem fique abaixo da especificação maxima.
 +
::* PASSO 5 - Verifique o valor real de Dwr = wAs-wAp, e faça a correção da ordem do filtro em função do desvio constatado. N2 = N*Dwr/Dw.
 +
::* PASSO 6 - Corrija o valor de projeto dos coeficientes Clp do filtro ideal, a janela e a resposta ao impulso.
 +
::* Repita o PASSO 3 até 6, até obter um filtro que atenda as especificações de Dw.
 +
::* PASSO 7 - Desloque a frequência de corte wc de modo a obter o valor correto de wp.  wc2 = wp + (wp-wAp).
 +
:* Projeto de filtro FIR.
 +
::*Projete os dois filtros projetados anteriormente como IIR, utilizando 3 janelas diferentes.  Compare os filtros obtidos com os filtros IIR.
 +
<syntaxhighlight lang=matlab>
 +
N = <ordem>
 +
h_fir = fir1(N,Wn,hamming(N+1));
 +
[Hw,w] =freqz(h_fir);
 +
plot(w/pi,20*log10(abs(Hw)))
 +
title(['hamming N = ' num2str(N)])
 +
%fvtool(h_fir,1)
 +
</syntaxhighlight>
 +
 +
:*Ver pag. 256 a 265 de <ref name="SHENOI2006"/>
 +
:*Ver artigos:
 +
::*[https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=21693 A new window and comparison to standard windows] Yeong Ho Ha ; Pearce, J.A. IEEE Transactions on Acoustics, Speech, and Signal Processing, Feb. 1989, Vol.37(2), pp.298-301.
 +
::*[https://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?arnumber=1163506 Some windows with very good sidelobe behavior] Nuttall, A. IEEE Transactions on Acoustics, Speech, and Signal Processing, February 1981, Vol.29(1), pp.84-91
 +
;Aula 18 (03 out):
 +
* Projetar os filtros LP, HP e BP de acordo com as especificações dadas.
 +
 +
;Aula 19 (07 out):
 +
*Filtros Digitais: Filtros FIR
 +
*Projeto de filtro FIR utilizando janelas temporais ajustáveis
 +
:*Uso de janelas ajustáveis no Matlab: [http://www.mathworks.com/help/signal/ref/kaiser.html kaiser], [http://www.mathworks.com/help/signal/ref/chebwin.html chebyshev], [http://www.mathworks.com/help/signal/ref/gausswin.html gauss], [http://www.mathworks.com/help/signal/ref/tukeywin.html tukey], [http://www.mathworks.com/help/signal/ref/taylorwin.html taylor].
 +
<syntaxhighlight lang=matlab>
 +
L = 64;
 +
r = 60;    % Chebyshev e Tukey
 +
alpha = 3; % Gauss
 +
betha = 8; % Kaiser
 +
nbar = 10; % Taylor
 +
wvtool(kaiser(L,betha), chebwin(L,r), gausswin(L,alpha),tukeywin(L,r), taylorwin(L,nbar,-r));
 +
</syntaxhighlight>
 +
Para a janela de Kaiser, a estimação do fator <math>\beta </math> e da ordem do filtro <math> N </math> são obtidos por:
 +
 +
<math>\beta = \left \{ \begin{matrix} 0.1102 (\alpha-8.7), & \alpha > 50, \\ 0.5842 (\alpha- 21)^{0.4} + 0.07886 (\alpha- 21) , & 50 \ge \alpha \ge 21, \\ 0, & \alpha < 21. \end{matrix}\right.</math>
 +
 +
<math> N = \frac {\alpha - 8} {2.285 \Delta \omega} + 1. </math>
 +
 +
onde <math> \alpha </math> é a atenuação do lóbulo lateral e <math> \Delta \omega </math> é a largura da banda de transição em rad/amostra.
 +
 +
A janela de Kaiser é definida por:
 +
 +
<math> w(n) = \frac{I_0 \left(\beta \sqrt{1-(\frac{n-\alpha}{\alpha})^2} \right)}{I_0(\beta)} </math>
 +
 +
onde :<math> I_0(x) = 1+ \sum_{k=1}^\infty {\left( \frac{(\frac{x}{2})^k}{k!}\right)}^2 </math> é a função de Bessel de ordem zero [http://mathworld.wolfram.com/ModifiedBesselFunctionoftheFirstKind.html]
 +
 +
Utilizando o Matlab é possível estimar esses valores utilizando a função kaiserord. Exemplo da obtenção de um filtro passa baixa com <math> f_{pass} = 1000 Hz </math>, <math> f_{stop} = 1500 Hz </math>, <math> f_{amostragem} = 8000 Hz </math> atenuação de 40 dB na "stopband"
 +
 +
<syntaxhighlight lang=matlab>
 +
fsamp = 8000;
 +
fcuts = [1000 1500];
 +
mags = [1 0];
 +
devs = [0.01 0.01];
 +
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
 +
</syntaxhighlight>
 +
 +
Com os parâmetros é possível projetar o filtro usando a função fir1, que utiliza o método da janela para o projeto do filtro.
 +
 +
<syntaxhighlight lang=matlab>
 +
h_fir = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');
 +
[Hw,w] =freqz(h_fir);
 +
plot(w*fsamp/2/pi,20*log10(abs(Hw)))
 +
title(['Kaiser filter N = ' num2str(n)])
 +
%fvtool(h_fir,1)
 +
</syntaxhighlight>
 +
:*Ver as funções [http://www.mathworks.com/help/signal/ref/fir1.html fir1], [http://www.mathworks.com/help/signal/ref/kaiserord.html kaiserord] do Matlab.
 +
:*Ver pag. 266 a 273 de <ref name="SHENOI2006"/>
 +
:* Uso das funções [http://www.mathworks.com/help/signal/ref/window.html window] e [http://www.mathworks.com/help/signal/ref/fir1.html fir1] do Matlab para projeto de filtro FIR
 +
 +
;Aula 22 (10 out):
 +
*Filtros Digitais: Filtros FIR
 +
:*Uso de janelas ajustáveis no Matlab: [http://www.mathworks.com/help/signal/ref/kaiser.html kaiser], [http://www.mathworks.com/help/signal/ref/chebwin.html chebyshev], [http://www.mathworks.com/help/signal/ref/gausswin.html gauss], [http://www.mathworks.com/help/signal/ref/tukeywin.html tukey], [http://www.mathworks.com/help/signal/ref/taylorwin.html taylor].
 +
 +
 +
:*Filtro de Parks-McClellan.  Funções [http://www.mathworks.com/help/signal/ref/firpm.html firpm] e [http://www.mathworks.com/help/signal/ref/firpmord.html firpmord], [https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=1083419 Chebyshev Approximation for Nonrecursive
 +
Digital Filters with Linear Phase].
 +
:*[http://mathworld.wolfram.com/RemezAlgorithm.html Remez exchange algorithm] -  o básico em Wolfram Alpha
 +
:*[http://eeweb.poly.edu/iselesni/EL713/remez/remez.pdf  Remez exchange algorithm] - o detalhe com implementação em Matlab.  Como resolver as anomalias na banda de transição.
 +
:*[http://www.ee.ic.ac.uk/hp/staff/dmb/courses/DSPDF/00700_OptimalFIR.pdf]
 +
*Exemplo do projeto de um filtro passa-baixas, com minima ordem (Filtro de Parks-McClellan) com frequência de passagem de 1000 Hz e frequência de rejeição de 1500 Hz, dada uma frequência de amostragem de 8000 Hz. Considere que a atenuação na banda de rejeição é de no mínimo 40 dB e o ripple máximo na banda passante é de 0.4 dB.
 +
 +
<syntaxhighlight lang=matlab>
 +
fa = 8000;
 +
 +
Ap = 0.4;         
 +
Ar = 40;         
 +
     
 +
fp = 1000;
 +
fr = 1500;
 +
 +
f = [fp fr];   
 +
a = [1 0];       
 +
dev = [(10^(Ap/20)-1)/(10^(Ap/20)+1)  10^(-Ar/20)];
 +
[n,fo,ao,w] = firpmord(f,a,dev,fa);
 +
b = firpm(n,fo,ao,w);
 +
[h,w] = freqz(b,1,1024,fa);
 +
plot(w, 20*log10(abs(h))); hold on;
 +
plot([0 fr fr fa/2], [Ap/2 Ap/2 -Ar -Ar],':m')
 +
plot([0 fp fp], [-Ap/2 -Ap/2 -(Ar+30)],':m');
 +
ylim([-(Ar+30) Ap/2+10])
 +
</syntaxhighlight>
 +
 +
 +
<!--
 +
;Aula 23 (14 out):
 +
*Projeto de filtro FIR
 +
:*projetar os filtros usando: 1) Janela fixa  2) Janela ajustável 3) Parks-McClellan.
 +
:*garantir que o filtro seja de menor ordem em cada caso, mas que esteja dentro das especificações.
 +
:*se necessário ajustar os valores de fs, fp, Ap, As, e a ordem do filtro, indicando o critério utilizado para o ajuste.
 +
 +
 +
<syntaxhighlight lang=matlab>
 +
%% Projetar o filtro passa baixas
 +
fp = 1200 Hz;
 +
fs = 1380 Hz;
 +
fa = 8000 Hz;
 +
Ap = 1 dB;
 +
Ar = 50 dB;
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang=matlab>
 +
%% Projetar o filtro passa altas
 +
fs = 1200 Hz;
 +
fp = 1380 Hz;
 +
fa = 8000 Hz;
 +
Ap = 1 dB;
 +
Ar = 50 dB;
 +
</syntaxhighlight>
 +
 +
;Aula 23 (10 mai)
 +
 +
*Projeto de filtro FIR
 +
:*projetar os filtros usando: 1) Janela fixa  2) Janela ajustável 3) Parks-McClellan.
 +
:*garantir que o filtro seja de menor ordem em cada caso, mas que esteja dentro das especificações.
 +
:*se necessário ajustar os valores de fs, fp, Ap, As, e a ordem do filtro, indicando o critério utilizado para o ajuste.
 +
 +
<syntaxhighlight lang=matlab>
 +
%% Projetar o filtro passa faixa
 +
fs1 = 800 Hz;
 +
fp1 = 900 Hz;
 +
fp2 = 1000 Hz;
 +
fs2 = 1300 Hz;
 +
fa = 8000 Hz;
 +
Ap = 1 dB;
 +
Ar = 50 dB;
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang=matlab>
 +
%% Projetar o filtro rejeita faixa
 +
fp1 = 800 Hz;
 +
fs1 = 900 Hz;
 +
fs2 = 1000 Hz;
 +
fp2 = 1300 Hz;
 +
fa = 8000 Hz;
 +
Ap = 1 dB;
 +
Ar = 50 dB;
 +
</syntaxhighlight>
 +
 +
Entrega do trabalho de projeto e análise de filtros digitais  (05 de junho de 2019, as 9:40)
 +
-->
 +
<!--
 +
;Aula 22 (09 out)
 +
:*Uso do [http://la.mathworks.com/help/dsp/ug/use-fdatool-with-dsp-system-toolbox-software.html]  para projeto de filtro IIR, FIR equiripple e FIR com janela.
 +
*Uso do [http://la.mathworks.com/help/dsp/gs/design-and-implement-a-filter.html] no Simulink.
 +
 +
;Aula 23 (23 out):
 +
:*Uso do Simulink
 +
::* Uso dos blocos de simulação [http://www.mathworks.com/help/simulink/slref/sinewave.html sinewave], [http://www.mathworks.com/help/simulink/slref/floatingscope.html scope] e [http://www.mathworks.com/help/dsp/ref/spectrumanalyzer.html Spectrum Analyzer].
 +
::* Outros blocos [http://www.mathworks.com/help/simulink/slref/mux.html mux], [http://www.mathworks.com/help/simulink/slref/demux.html demux], [http://www.mathworks.com/help/simulink/slref/add.html sum], [http://www.mathworks.com/help/simulink/slref/product.html product].
 +
::*[https://www.mathworks.com/help/simulink/gs/create-a-simple-model.html?s_cid=learn_doc Create Simple Model] [https://www.mathworks.com/videos/getting-started-with-simulink-118723.html]
 +
 +
;Aula 24 (25 out):
 +
:*Uso do Simulink
 +
:*Tipos de Solver ([http://www.mathworks.com/help/simulink/ug/choosing-a-solver.html Choose a Solver]).
 +
:*Diferença entre processamento por amostra e processamento por quadro ([http://www.mathworks.com/help/dsp/ug/sample-and-frame-based-concepts.html Sample- and Frame-Based Concepts]).
 +
:*Exemplos:
 +
::*[https://www.mathworks.com/help/dsp/ug/filter-frames-of-a-noisy-sine-wave-signal-in-simulink.html Filtragem] - frame based
 +
::*[[Modulações Analógicas]]
 +
::*[[Amostragem de sinais]]
 +
::*[https://www.mathworks.com/help/dsp/ug/digital-filter-design-block.html Digital Filter Design Block], [https://www.mathworks.com/help/dsp/ref/digitalfilterdesign.html],  [https://www.mathworks.com/help/dsp/ref/filterrealizationwizard.html]
 +
 +
:::*É importante ler informações complementares sobre o [http://www.mathworks.com/help/simulink/gui/solver-pane.html Solver Pane], [http://www.mathworks.com/help/simbio/ug/simulating-models.html Model Simulation], [http://www.mathworks.com/help/simulink/ug/types-of-solvers.html Types of Solvers], [http://www.mathworks.com/help/simevents/ug/solvers-for-simevents-models.html Solvers for Discrete-Event Systems].
 +
 +
:::*É importante ler informações complementares sobre, [http://www.mathworks.com/help/simulink/sample-time.html Tempo de amostragem (Time Sample)], [http://www.mathworks.com/help/simulink/ug/how-to-view-sample-time-information.html View Sample Time Information],  [http://www.mathworks.com/help/simulink/slref/concatenate.html Vector Concatenate, Matrix Concatenate]
 +
Para configurar o Simulink para sistemas discretos execute o comando dspstartup.m antes de abrir um novo modelo.
 +
 +
;Aula 25 (ESTUDOS EXTRACLASSE):
 +
para compensar a palestra da MCC
 +
-->
 +
{{collapse bottom}}
  
 
==Avaliações==
 
==Avaliações==

Edição das 00h14min de 21 de maio de 2020

Registro on-line das aulas

Unidade 1

Unidade 1
Aula 1 (10 fev)
Aula 2 (13 fev)
  • Revisão de transformada de Laplace e Z
Aula 3 e 4 (17 e 20 fev)
Aula 5 (27 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
  • Explorar a interface do Matlab.
  • Funções de visualização das variáveis no workspace.
  • Execução de instruções passo a passo.
  • Escrita de script .m
  • Uso da execução das seções de um script.
  • Incremento de valor e execução.
EXEMPLOS:
  • Leia com atenção e execute o exemplo (Moving-Avarage Filter) na página de help da função filter.
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
  • Leia com atenção o help Using FFT, abra o script clicando no botão [Open this Example]. Execute o script seção após seção. Note o uso da fft para determinar a frequência das manchas solares.
  • Para melhorar o desempenho no Matlab recomendo que leiam a pagina do Help, . Também gostaria de lembra-los que a tecla F9 executa o código destacado no Help. Programação com scripts .m.
  • Leia sobre manchas solares para entender o que são os dados do segundo exemplo.
Sinais no dominio do tempo e dominio da frequencia. Uso da função fft
Exemplo de uso da FFT
%% Signal in Time Domain 
% Use Fourier transforms to find the frequency components of a signal buried in noise.
% Specify the parameters of a signal with a sampling frequency of 1 kHz and a signal duration of 1.5 seconds
Fs = 1000;            % Sampling frequency                    
T = 1/Fs;             % Sampling period       
L = 1500;             % Length of signal
t = (0:L-1)*T;        % Time vector

% Form a signal containing a 50 Hz sinusoid of amplitude 0.7 and a 120 Hz sinusoid of amplitude 1.
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);

% Corrupt the signal with zero-mean white noise with a variance of 4.
X = S + 2*randn(size(t));

% Plot the noisy signal in the time domain. It is difficult to identify the frequency components by looking at the signal X(t).
subplot(311);
plot(1000*t(1:200),X(1:200), 'b')
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('t (milliseconds)')
ylabel('X(t)')
hold on
plot(1000*t(1:200),S(1:200),'r')
hold off

% Signal in Frequency Domain
% Compute the Fourier transform of the signal.
Y = fft(X);

% Compute the two-sided spectrum P2. Then compute the single-sided spectrum P1 based on P2 and the even-valued signal length L.
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);

A2 = angle(Y);
A1 = A2(1:L/2+1);

% Define the frequency domain f and plot the single-sided amplitude spectrum P1. 
% The amplitudes are not exactly at 0.7 and 1, as expected, because of the added noise. 
% On average, longer signals produce better frequency approximations.
f = Fs*(0:(L/2))/L;
subplot(3,1,2);
plot(f,P1, 'b')

title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
hold on
% Now, take the Fourier transform of the original, uncorrupted signal and retrieve the exact amplitudes, 0.7 and 1.0.
Y = fft(S);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);

plot(f,P1, 'r') 

title('Single-Sided Amplitude Spectrum of S(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
hold off

% Angulo  / fase 
subplot(3,1,3);
plot(f,A1)
%ylim([0 1.05]) 
title('Single-Sided Phase Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('phase(f)')
  • Amostragem de Sinais (Experimento 1.2)
  • Relembrar teorema da amostragem. Efeito da amostragem abaixo da frequência de Nyquist. Aliasing.
  • Notar que as amostras de um sinal (3 Hz) e um sinal (7 Hz) são idênticas quando amostrado com um sinal de 10 Hz.
Experimento 1.2
%  Exemplos e Experimentos baseados no livro:
% 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.
%% Experimento 1.2
fs = 10; % frequencia (Hz) de amostragem dos sinais
Ts = 1/fs; fase = 0;
time = 0:Ts:(1-Ts);
f1 = 3; % frequencia (Hz) do sinal s_1
f2 = 7; % frequencia (Hz) do sinal s_2
s_1 = cos(2*pi*f1*time+fase);
s_2 = cos(2*pi*f2*time+fase);
fsa = 1000; % frequência auxiliar de amostragem usada apenas para representação dos sinais originais
Tsa = 1/fsa;
time_aux = 0:Tsa:(1-Tsa);
figure(1);
stem(time,s_1,'ob');
hold on;
plot(time_aux, cos(2*pi*f1*time_aux+fase),'--k');
stem(time,s_2,'+r');
plot(time_aux, cos(2*pi*f2*time_aux+fase),'--m');
hold off;
legend('s_1 discreto','s_1 contínuo','s_2 discreto','s_2 contínuo')
DICAS:
  • No help on-line da Mathworks, usando o botão [Try This Example > Try in your browser], permite executar o código no próprio browser sem ter nenhuma instalação do Matlab. Para verificar que o código realmente é executado mude a amplitude do ruído randômico para 0.1 ou 0.5, insira o comando close all antes da primeira linha, e execute todo o código [Run All]
  • No help do Matlab, usando o botão [Open this Example], é possível executar o código seção a seção.
Aula 7 (5 mar)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
Variação do Experimento 2.2
%  Exemplos e Experimentos baseados no livro:
% 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.
%% Experimento 2.2
% Resposta em frequencia usando a função freqz
N = 1;
num = [1 0 0 0];
den = poly([0.8 0.2])
%den = [1 0.6 -0.16];
% modo 1
%[H,w]=freqz(num,den,[0:pi/100:N*pi-pi/100]);
%plot(w/pi, abs(H));
% modo 2
%[H,w]=freqz(num,den);
%plot(w/pi, abs(H));
% modo 3
%[H,w]=freqz(num, den, 'whole');
%plot(w/pi, abs(H));
% modo 4
freqz(num, den, 'whole');
figure(2);
zplane(num,den);

%% Resposta em frequencia substituindo z -> e^(jw)
syms z
Hf(z) = symfun(z^2/(z-0.2)/(z+0.8),z);
pretty(Hf)
latex(Hf)
N = 1;
w = [0:pi/100:N*pi-pi/100];
plot(w/pi,abs(Hf(exp(1i*w))))
%title(['$' latex(Hf) '$'],'interpreter','latex')
text(0.2,2,['H(z) = ' '$$' latex(Hf) '$$'],'interpreter','latex')
xlabel(['w/' '$$' '\pi' '$$'],'interpreter','latex')
  1. Verifique a diferença entre os tipos de plots comentados no código.
  2. substitua o denominador de H(z) por dois polos em [-0.8 -0.8].
  3. verifique o que ocorre se forem utilizados polos complexos conjugados [0.3-0.4i 0.3+0.4i 0.1]
  4. verifique o que ocorre se forem utilizados polos complexos não conjugados [0.3-0.4i 0.3+0.8i]
  5. verifique o que ocorre se os polos estiverem fora do circulo unitário [1.2 -0.2]. Interprete este resultado
Aula 8 (9 mar)
  • A filtragem de sinais digitais pode ser realizada de diferentes formas:
  • convolução (y = conv(x,h)), onde x(n) é o sinal de entrada e h(n) é a resposta ao impulso do filtro (sistema linear invariante no tempo),
  • filtragem no domínio do tempo (y = a1.x(n)+ a2.x(n-1)+ .. ak.x(n-k));
  • no domínio da frequência (y = ifft(fft(x)fft(h))
Variação do Experimento 3.1
%% Variação do Experimento 3.1 do livro:
% 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.
% FILE: Ex3_1.m
% Exemplificando as possiveis formas de realizar a filtragem de um sinal x(n)

clc; clear all; close all;
%% Definindo valores iniciais
Nh = 10; Nx = 20;
%Nh = 400; Nx = 10000;
x = ones(1,Nx);
% A resposta ao impulso de um sistema h(n) 
% no filtro FIR aos coeficientes b(n) = h(n) 
h = [1:Nh]; b = h;
%% Filtrando o sinal e medindo tempos

% OPÇÃO 1 - Filtragem utilizando a convolução
% NOTE: length(y) = length(x) + length(h) -1

tic;  % iniciar a contagem do tempo
y1 = conv(x,h); 
t(1) = toc; % terminar a contagem e mostrar tempo no console

% OPÇÃO 2 - filtragem utilizando a equação recursiva
% NOTE: length(y) = length(x)

tic;
y2 = filter(b,1,x);
t(2) = toc;

% OPÇÃO 3 - filtragem utilizando a equação recursiva 
% aumentando o tamanho de x para que length(y3) = length(y1)
x3 = [x zeros(1,length(h)-1)];

tic;
y3 = filter(h,1,x3); 
t(3) = toc;

length_y = length(x) + length(h) - 1;

% OPÇÃO 4 - filtragem utilizando a FFT 
% a y = IFFT(FFT(x)*FFT(h))

tic;
X = fft(x,length_y);
H = fft(h,length_y);
Y4 = X.*H;
y4 = ifft(Y4);
t(4) = toc;

% OPÇÃO 5 - filtragem utilizando a função fftfilt
% a y = IFFT(FFT(x)*FFT(h))

tic
y5 = fftfilt(h,x3);
t(5) = toc;

disp('Comprimento do vetor de saída length(y)')
disp(['    ' num2str([length(y1) length(y2) length(y3) length(y4) length(y5)])])
disp('Tempo usado na filtragem em micro segundos')
disp(['    ' num2str(t*1e6) ' us'])

%%  Plotando o gráfico
subplot(411);stem(y1);
hold on;
stem(y2,'xr');
stem(y3,'+m');
legend('y1', 'y2', 'y3')
hold off
subplot(412);stem(y1, 'ob');legend('y1')
subplot(413);stem(y2, 'xr'); hold on; stem(zeros(size(y1)),'.w');hold off; legend('y2')
subplot(414);stem(y3, '+m');legend('y3')
  • Verificar as funções tic e toc
  • Notar a diferença de tempo de processamento entre os processos de filtragem.
  • A situação pode ser muito diferente conforme muda o tamanho do sinal e ordem do filtro (h(n)). Modifique a resposta ao impulso e o sinal de entrada modificando os valores das variáveis de tamanho: Nh = 10, 100, 1000; Nx = 20, 1000, 10000;
  • Em função do sistema operacional e reserva de memória para as variáveis é importante desprezar a primeira medida de tempo. Realize 3 medidas de tempo para cada uma das 5 opções de filtragem, com pelo menos duas combinações de comprimento Nh e Nx.
  • Verifique o tempo de processamento usando a instrução profile
profile on
  • Após ativar o profiler, execute o programa e veja o tempo total do script e de cada função chamada.
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).

Variação do Experimento 2.3
%% Experimento 2.3 - Filtros Digitais
% Exemplos e Experimentos baseados no livro:
% 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.
% FILE: Exp2_3.m
 
%% 1º filtro
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 ]'; P = [p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
 
%% 2º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p1 p1' p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
 
%% 3º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.99*exp(1j*pi/4);
p2 = 0.9*exp(1j*pi/4 - 1j*pi/30);
p3 = 0.9*exp(1j*pi/4 + 1j*pi/30);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p2 p2' p3 p3']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);

Unidade 2

Unidade 2
Aula 9 (12 mar)
Conceitos Gerais sobre Filtros Analógicos
  • Função de transferência
  • Resposta em frequência: para obter a resposta em frequência é necessário avaliar
  • O projeto de filtros analógicos é realizado em 2 etapas:
  1. projeto de um filtro passa baixas (LP) protótipo normalizado com frequência de passagem
  2. transformação em frequência para o tipo de filtro (LP, HP, BP ou BS)

Na sequência será mostrado como inicialmente projetar o filtro LP protótipo, e depois as transformações em frequência.

  • No entanto, antes de projetar filtros, vejamos a análise básica de filtros analógicos utilizando o Matlab.
Dado um sistema linear invariante no tempo, representado pela função de transferência , obter a resposta de frequência do sistema (Magnitude e Fase).
%%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;
  • Para aproximação de magnitude de filtros analógicos o projeto pode usar as aproximações de Butterworth, Chebyshev (tipo 1 ou 2) ou Cauer, mostradas na figura abaixo.

TiposFiltrosHs.png

Projeto de filtros analógicos do tipo Butterworth

Os projetos de filtro Butterworth com função de transferência utilizam os polinômios de Butterworth mostrados na tabela a seguir:

n Fatores Polinomiais de
1
2
3
4
5
6
7
8
9
10
Proposta de exercício
  • Use os polinômios de Butterworth com ordens de 1 a 10 mostrados na tabela abaixo para obter os filtros .
  • Escolha uma ordem n (entre 5 e 10)
  • Plote a resposta em frequência em escala log da amplitude (em dB) e da fase (em rad/pi).
  • Qual é o ganho do filtro na banda passante?
  • Qual é a frequência de corte (-3dB) do filtro.
  • Qual é o salto de de fase que ocorre em algumas frequências?
  • Qual é o fator de atenuação em dB/decada após a frequência de corte?
  • Faça o diagrama de polos e zeros desse filtro.
  • Procure observar o que ocorre com a posição dos polos do filtro.
  • Calcule o valor do módulo dos pólos.

INÌCIO DAS AULAS REMOTAS

Aula 10 e 11 (26 e 30 mar)
Projeto de filtros analógicos LP protótipo
  • Projeto de filtros analógicos passa baixas (low pass - LP) do tipo Butterworth, considerando: é a frequência de passagem, é a atenuação em dB na frequência de passagem, é a frequência de stopband, é a atenuação em dB na frequência de stopband.

MascaraFiltroLP.png

  • Escalando as frequências em relação a , teremos que , e são as frequências de passagem e stopband do filtro protótipo , que tem ganho unitário e frequência de passagem 1.
Casos em que o ganho na banda de passagem é
  • Considerando o caso de filtro Butterworth com frequência de passagem e frequência de stopband (rejeição) de , com ganho unitário em
  • Se considerarmos o caso particular em que na frequência de passagem o ganho (em escala linear) deve ser , que corresponde a um ganho (em escala log) , ou atenuação .
  • Obtemos o fator , ou , para temos que . Esse fator no caso dos filtros com essa atenuação acaba desaparecendo das equação de projeto. Para atenuações diferentes de 3 dB, ele ajusta a magnitude dos pólos, e afeta a ordem do filtro.
  • Os passos para projetar um filtro analógico Hs(s) são:
0) fazer a normalização da frequência e do ganho.
, e para o caso de filtros LP.
, .
1) determinar a ordem do filtro utilizando a equação:
2) e em seguida obter os polos do filtro:
3) Com os pólos botem-se o denominador da função de transferência do filtro.
4) E assim obtém-se a função de transferência do filtro protótipo
5) Para obter a função de transferência do filtro analógico LP é necessário fazer uma transformação de frequência
6) Se o ganho na frequência não for unitário G0, é ainda necessário ajustar o ganho do filtro do fator de ganho. Considerando que o valor do Ganho G0 seja dado em dB, teremos que , ou seja
Exemplo Filtro LP Butterworth

Projete um filtro Butterworth LP com ganho em , frequência de passagem com ganho no mínimo de , frequência de rejeição de , na qual o ganho deve ser inferior a dB.

  • Dados de , passa-baixas (lowpass-LP)
  • Especificações de , passa-baixas (lowpass-LP) protótipo
  • Determinação de
  • Determinação de substituindo e corrigindo o ganho em
  • Obtida a função de transferência obtenha a resposta em frequência, substituindo
  • Obtenha a resposta em frequência, para
  • Plote o gráfico de e , indicando a máscara de especificação do filtro.


Aula 12 (2 abr)
Casos em que o ganho na banda de passagem é um valor qualquer
  • Teremos , ou
  • Para projetar o filtro é necessário:
1) determinar a ordem do filtro:
2) obter os polos do filtro:
3) obter a função de transferência:
, onde e .
NOTA: o valor também pode ser obtido a partir de , pois corresponde ao último termo do polinômio .
4) No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado fazendo a transformação de frequência
Exemplo Filtro LP Butterworth

Projete um filtro Butterworth LP com ganho em , frequência de passagem com atenuação máxima de , frequência de rejeição de com atenuação mínima de .

  • Dados de , passa-baixas (lowpass-LP)
  • Especificações de , passa-baixas (lowpass-LP) protótipo
  • Determinação de
  • Determinação de substituindo e corrigindo o ganho em
  • Obtida a função de transferência obtenha a resposta em frequência, substituindo
  • Obtenha a resposta em frequência, para
  • Plote o gráfico de e , indicando a máscara de especificação do filtro.
Aula 13 (6 abr)
Polinômios Chebyshev de primeira ordem

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 .

ChebyshevGraph.png
Figura: Os primeiros cinco polinômios de Chebyshev de primeira ordem no domínio

FONTE: Polinômios de Tchebychev, Wikipedia

Projeto de filtro protótipo LP do tipo Chebyshev I
  • Determine a ordem mínima necessária considerando: é a frequência de passagem do filtro LP, é a atenuação em dB na frequência de passagem, é a frequência de stopband do filtro, é a atenuação em dB na frequência de stopband, , são as frequências de passagem e stopband do filtro protótipo.
onde ou .
  • Obtenha os polos do filtro:
,
onde e



  • Para obter a função de transferência:
, onde
onde
é o último termo do denominador


, onde
Projeto de Filtros Analógicos do tipo LP, HP, BP, BS

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.

  • Transformações de frequência de filtros analógicos
  • passa-baixas () -> passa-baixas ()
  • Cálculo do protótipo com
  • Substituição de variáveis
  • passa-baixas () -> passa-altas ()
  • Cálculo do protótipo com
  • Substituição de variáveis
  • passa-baixas () -> passa-faixa ( e )
  • Cálculo do protótipo com
  • Substituição de variáveis
onde e
  • passa-baixas () -> rejeita-faixa ( e )
  • Cálculo do protótipo com
  • Substituição de variáveis
onde e
Aula 14 (9 abr)
Exemplo Filtro HP Chebyshev I

Projete um filtro Chebyshev I HP com ganho em , frequência de rejeição com atenuação mínima de , frequência de passagem de com atenuação máxima de .

  • Dados de , passa-altas (highpass-HP)
  • Especificações de , passa-baixas (lowpass-LP) protótipo
  • Determinação de
  • Determinação de HP substituindo e corrigindo o ganho em
  • Obtida a função de transferência obtenha a resposta em frequência, substituindo
  • Obtenha a resposta em frequência, para
  • Plote o gráfico de e , indicando a máscara de especificação do filtro.
Aula 15 (13 abr)
  • [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') 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.
%% 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))
  • [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.
  • [b,a] = cheby1(n,Rp,Wp,ftype,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type I filter with passband edge angular frequency Wp and Rp decibels of passband ripple.
  • [n,Ws] = cheb2ord(Wp,Ws,Rp,Rs,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type II filter with cutoff angular frequencies Ws.
  • [b,a] = cheby2(n,Rs,Ws,ftype,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type II filter with stopband edge angular frequency Ws and Rs decibels of stopband attenuation.
  • [n,Wn] = ellipord(Wp,Ws,Rp,Rs,'s') finds the minimum order n and cutoff frequencies Wn for an analog elliptic filter. Specify the frequencies Wp and Ws in radians per second. The passband or the stopband can be infinite.
  • [b,a] = ellip(n,Rp,Rs,Wp,ftype, 's') designs a lowpass, highpass, bandpass, or bandstop analog elliptic filter with passband edge angular frequency Wp, Rp decibels of passband ripple, and Rs decibels of stopband attenuation.
  • Note: The resulting bandpass and bandstop designs are of order 2n.
  • Note: See Limitations [1] for information about numerical issues that affect forming the transfer function.
  • Projeto de filtros analógicos do tipo Butterworth, Chebyshev I e II e Cauer (eliptico) usando funções do Matlab.
%% 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');
  • Ver pag. 204 a 208 de [2]
Aula 16 (16 abr)
  • Exemplos de Filtros Analógicos:
  • Exemplo 1: Filtro passa-baixas ( = 941Hz, = 1209 Hz, = 1 dB, = 20 dB)
  • Exemplo 2: Filtro passa-altas ( = 1209 Hz, = 941Hz, = 1 dB, = 20 dB)
  • Exemplo 3: Filtro passa-faixa ( = 770 Hz, = 811 Hz, = 895,5 Hz, = 1209 Hz, = 1 dB, = 30 dB, = 5 dB).
  • Exemplo 4: Filtro rejeita-faixa ( = 53 Hz, = 58 Hz, = 62 Hz = 67 Hz, = 2 dB, = 25 dB)
NOTA:
  • No calculo do filtro lembre-se de usar as frequências angulares para , , , .
  • onde () é a frequência de passagem em Hz (rad/s), () é a frequência de rejeição em Hz (rad/s), () é a frequência central em Hz (rad/s), () é 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.
Aula 17 e 18 (23 e 28 abr)
  • Filtros Digitais: Filtros IIR: transformações do tempo contínuo no tempo discreto
  • Obter a especificação do filtro em angulo entre 0 e 1, onde 1 corresponde a metade da frequência de amostragem , ou também o angulo
  • Obter o valor desse angulo predistorcido para compensar a distorção na frequência causada pela transformação bilinear , onde
  • passa-baixas () -> passa-baixas ()
  • Substituição de variáveis
  • Cálculo do protótipo com
  • passa-baixas () -> passa-altas ()
  • Substituição de variáveis
  • Cálculo do protótipo com
  • passa-baixas () -> passa-faixa ( e )
  • Substituição de variáveis
  • Cálculo do protótipo com
onde e
  • passa-baixas () -> rejeita-faixa ( e )
  • Substituição de variáveis
  • Cálculo do protótipo com
onde e
  • Realizar os projetos dos exemplos anteriores, considerando uma frequência de amostragem de 8 kHz.
  • Ver pag. 219 a 229 de [2]
  • Ver pag. 403 a 415 e 434 a 435 de [1]
  • Ver também a ferramenta fvtool, que facilita a análise dos filtros digitais.
Exemplo filtro digital BP IIR - transformação bilinear

Projete um filtro digital passa-banda IIR com , frequências de passagem e com ganho no mínimo de , frequências de rejeição de e , na qual o ganho deve ser inferior a dB. Considere dois projetos para uma frequência de amostragem e também para .

  • Dados de especificação do filtro passa-banda (band-pass - BP)
  • Dados do filtro digital , passa-banda (band-pass - BP)
  • Dados do filtro analógico , passa-banda (band-pass - BP)
  • Especificações de , passa-baixas (lowpass-LP) protótipo
  • Determinação de
  • Determinação de substituindo e corrigindo o ganho em
  • Obtida a função de transferência obtenha a resposta em frequência, substituindo
  • Determinação de substituindo
  • Plote o gráfico de , e , indicando a máscara de especificação do filtro.
IIRCheb2BP.png


Aula 19 (30 abr)
O projeto dos filtros digitais IIR baseados na transformada bilinear no Matlab é realizada em dois passos: (1) Determinação da ordem do filtro; (2) Determinação dos coeficientes do numerador e denominador de .
fa = 200;
fN = fa/2;
wo = 60/fN;  bw = 10/fN;
[b,a] = iirnotch(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000;
fN = fa/2;
wo = 941/fN;  bw = 100/fN;
[b,a] = iirpeak(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000; fN = fa/2;
fo = 1000;  bw = 20/fN;
[b,a] = iircomb(fa/fo,bw,'peak');  % ou use a flag 'notch'
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
Dias 4, 7, 11 e 14 mai
  • Parada Pedagógica sem aulas de acordo com a resolução do colegiado do campus de São José.

ATUAL

Dia 18 mai
  • Retorno às ANPs, porém sem aula de acordo com mensagem recebida do chefe do DEPE.
  • Foi solicitado que todos alunos se cadastram no workspace da disciplina no SLACK.
  • Foi solicitado que todos alunos respondam a uma sondagem sobre as ANPs Volta às aulas não presenciais em tempo de pandemia.
  • Resultado das outras enquetes:
Você gostaria que a UC de PSD29007 tivesse continuidade através de ANPs durante a pandemia do corona virus?
sim
█████████████████████████ | 100% (11)
não
A que horas começar as aulas?
7:30
████████ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 33% (3)
7:45
██████████████ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 56% (5)
8:00
██ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 11% (1)
8:15
⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 0% (0)

Unidade 3

Unidade 3 - Filtros FIR
Aula 16 (21 mai)
  • Filtros Digitais: Filtros FIR
  • Filtros de fase linear: simétricos e antisimétricos (Tipo 1, 2, 3 e 4)
  • Filtros de fase linear: propriedades (respostas em frequência possíveis, distribuição dos zeros em simetria quadrantal)
  • Observar as propriedades dos FIR tipo 1, 2, 3 e 4. Observe a resposta de frequência, fase, atraso de grupo, coeficientes e diagrama de polos e zeros dos filtros abaixo.
N = 10;
bi = 2*(rand(1,N)-0.5)
%% Tipo I - LP, HP, BS, BP
b = [bi (2*rand(1,1)-0.5) flip(bi)];
...
%% Tipo II - LP, BP
% tem um zero em -1 
b = [bi  flip(bi)];
...

%% Tipo III - BP
% tem um zero em 1  e -1 
b = [bi  0 -flip(bi)];
...

%% Tipo IV - BP, HP
% tem um zero em 1   
b = [bi  -flip(bi)];
...

FIR tipo1.png
Figura 1 - Propriedades do filtro FIR de fase linear (Tipo 1)

Avaliações

  • Atividades extraclasse
AE1 - Cálculo de uma DFT de comprimento 8
AE1 - Cálculo de uma DFT de comprimento 8.
  • Determine a transformada discreta de Fourier X(w) a partir da sequencia discreta x(n) indicada na tabela abaixo.
  • Utilize a equação da DFT
  • O algoritmo FFT indicado na tabela, onde dt é decimação no tempo (Fig 3.9) e df é decimação na frequência (Fig 3.13)
  • Use uma folha de papel para anotar os valores dos produtos intermediários tanto da DFT como da FFT.
  • Compare os resultados obtidos para de X(k) obtido com os dois cálculos.
  • Poste no Moodle a folha de cálculos (digitalize usando scanner ou smartphone).
AE2 - Projeto de Filtro Analógico e Filtro Digital IIR (Entrega e prazos ver Moodle)

A primeira parte dessa 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 conforme o tipo de filtro desejado; Nesta avaliação é solicitado que cada equipe realize o projeto de 2 filtros analógicos. Na segunda parte é solicitado que os filtros BP e BS sejam projetados seguindo as etapas (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) (c) conversão do filtro analógico H(s) em digital H(z), usando a transformação bilinear. Note que nestes casos a frequência de amostragem do sinal e sistema é fundamental no projeto.

Equipe Filtro 1 Filtro 2 Filtro 3 Filtro 4
Equipe 1 LP - ( = 200 Hz; = 1000 Hz, = 3 dB, = 30 dB, = 10 dB, Butterworth) HP - ( = 200 Hz; = 1000 Hz, = 1 dB, = 30 dB, = -10 dB, Chebyshev 1) BP - ( = 44100 Hz; = 1200 Hz; = 2000 Hz, = 3000 Hz; = 3800 Hz, = 1 dB, = 35 dB, = 5 dB ) BS - ( = 44100 Hz; = 1200 Hz; = 2000 Hz, = 3000 Hz; = 3800 Hz, = 1 dB, = 35 dB, = 5 dB )
Equipe 2 LP - ( = 40 Hz; = 200 Hz, = 3 dB, = 20 dB, = 5 dB, Butterworth) HP - ( = 40 Hz; = 200 Hz, = 1 dB, = 50 dB, = 10 dB, Chebyshev 1) BP - ( = 8000 Hz; = 1200 Hz; = 2000 Hz, = 3000 Hz; = 3800 Hz, = 3 dB, = 40 dB, = 20 dB ) BS - ( = 8000 Hz; = 1200 Hz; = 2000 Hz, = 3000 Hz; = 3800 Hz, = 3 dB, = 40 dB, = 20 dB )
Equipe 3 LP - ( = 20 Hz; = 100 Hz, = 3 dB, = 25 dB, = 1 dB, Butterworth) HP - ( = 20 Hz; = 100 Hz, = 2 dB, = 60 dB, = -20 dB, Chebyshev 1) BP - ( = 1000 Hz; = 150 Hz; = 200 Hz, = 300 Hz; = 380 Hz, = 1 dB, = 40 dB, = 10 dB ) BS - ( = 1000 Hz; = 150 Hz; = 200 Hz, = 300 Hz; = 380 Hz, = 1 dB, = 40 dB, = 10 dB )
Equipe 4 LP - ( = 10 Hz; = 60 Hz, = 3 dB, = 35 dB, = -5 dB, Butterworth) HP - ( = 10 Hz; = 60 Hz, = 2 dB, = 45 dB, = 10 dB, Chebyshev 1) BP - ( = 2000 Hz; = 150 Hz; = 200 Hz, = 300 Hz; = 380 Hz, = 0.5 dB, = 30 dB, = 0 dB ) BS - ( = 2000 Hz; = 150 Hz; = 200 Hz, = 300 Hz; = 380 Hz, = 0.5 dB, = 30 dB, = 0 dB )
Equipe 5 LP - ( = 100 Hz; = 500 Hz, = 3 dB, = 40 dB, = -10 dB, Butterworth) HP - ( = 100 Hz; = 500 Hz, = 3 dB, = 50 dB, = 10 dB, Chebyshev 1) BP - ( = 4000 Hz; = 400 Hz; = 800 Hz, = 1000 Hz; = 1400 Hz, = 3 dB, = 40 dB, = -10 dB ) BS - ( = 4000 Hz; = 400 Hz; = 800 Hz, = 1000 Hz; = 1400 Hz, = 3 dB, = 40 dB, = -10 dB )
onde:
- são as "N" frequência de especificação do filtro dadas em Hertz (kHz ou MHz);
LP (Low Pass)- Passa Baixa e .
HP (High Pass)- Passa Altas e .
BP (Band Pass)- Passa Faixa e , e .
BS (Band Stop)- Rejeita Faixa e , e .
- frequência de amostragem; - frequência de passagem; - frequência de rejeição (stopband), - Atenuação máxima na banda de passagem (dB), - Atenuação mínima na banda de rejeição (dB) (stopband), - Ganho na banda de passagem (dB).
  • Os filtros LP e HP devem ser realizados utilizando a aproximação de Butterworth ou Chebyshev tipo 1 (devendo ser todos os calculados efetuados a partir das equações).
  • Os filtros BP e BS devem ser realizados utilizando a aproximação de Chebyshev tipo 2 ou Euler (podendo ser calculada a função H(p) a partir das funções do Matlab.
  • Para todos os filtros nos resultados deve ser indicada a ordem do filtro, o valor de polos e zeros, e as equações de H(p), H(s). No caso dos filtros 3 e 4 apresente os resultados para H(z).
  • Deve ser apresentado de forma gráfica a resposta em frequência dos filtros (ganho em dB e fase) dos filtros (a) protótipo H(p), (b) Filtro analógico H(s). No caso dos filtros 3 e 4 apresente os resultados para H(z).
  • Utilize uma mascara com as especificações para mostrar que os filtros atendem a especificação original (ver Fazer mascara de um filtro no Matlab).
  • Apresente o diagrama dos pólos e zeros dos filtros H(p), H(s). No caso dos filtros 3 e 4 apresente também o diagrama para H(z).
  • Utilize a mesma escala em dB para os gráficos de cada filtro. Nas abcissas utilize uma escala em Hz (kHz ou MHz). Utilize uma mascara com cor diferenciada para indicar claramente a especificação do filtro, e crie um segundo gráfico mostrando claramente a banda de passagem.
  • Escreva um relatório técnico em PDF mostrando os resultados obtidos e comentando os resultados obtidos. Não é necessário apresentar a teoria utilizado para o projeto, mas todos os cálculos devem estar documentados.
  • Envie o relatório em pdf ou imagem dos cálculos e eventuais arquivos ".m" utilizados na plataforma Moodle.


  • 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).

Referências Bibliográficas

  1. 1,0 1,1 1,2 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. 2,0 2,1 2,2 2,3 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822


Curso de Engenharia de Telecomunicações