Mudanças entre as edições de "PSD29007-Engtelecom(2019-2) - Prof. Marcos Moecke"
Ir para navegação
Ir para pesquisar
(→ATUAL) |
|||
Linha 724: | Linha 724: | ||
pretty(vpa(H(z),3)) | pretty(vpa(H(z),3)) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Unidade 3=== | ||
+ | {{collapse_top | expand=true | Unidade 3 - Filtros FIR}} | ||
+ | ;Aula 16 (23 set): | ||
+ | *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 16 e 17 (19 e 24 abr) | ||
+ | :*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 19 a 21 (23 abr a 03 mai): | ||
+ | *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 | ||
+ | |||
+ | <code> | ||
+ | %% Exemplo de Filtro | ||
+ | wp1 = 0.1 \pi; | ||
+ | ws1 = 0.2 \pi; | ||
+ | ws2 = 0.6 \pi; | ||
+ | wp2 = 0.8 \pi; | ||
+ | Ap = 1 dB; | ||
+ | Ar = 40 dB; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ;Aula 22 (08 mai): | ||
+ | *Filtros Digitais: Filtros FIR | ||
+ | :*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]. | ||
+ | :*[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] | ||
+ | |||
+ | *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}} | {{collapse bottom}} | ||
Edição das 13h47min de 23 de setembro de 2019
Registro on-line das aulas
Unidade 1
Unidade 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Aula 1 EAD
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). %% 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);
%% Carregando o som
clear, close, clc
load handel;
%% Reproduzindo o som
sound(y,Fs)
% Reproduzindo o som
%soundsc(y,Fs)
% Reproduzindo o som
%player = audioplayer(y, Fs);
%play(player);
%% Carregando o som
clear, close, clc
[y,Fs] = audioread('DTMF_8kHz.ogg');
%% Reproduzindo o som
sound(y,Fs)
%% Visualizando o som no DT
time = [0:length(y)-1]'/Fs;
plot(time',y'); xlabel('segundos');
xlim([0 time(end)]), ylim([-1 1]);
%% Visualizando o som no DF
Nfreq = length(y);
freq = linspace(0,2*pi,Nfreq)'*Fs/pi/2;
Y = fft(y,Nfreq)/Nfreq;
plot(freq,abs(Y)); xlabel('Hertz');
xlim([0 Fs/2]);
|
Unidade 2
Unidade 2 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
b = [1 1];
a = [1 1 5];
[z1,p1,k]=tf2zp(b,a)
z2 = roots(b);
p2 = roots(a);
zplane(b,a);
%%
freqs(b,a);
%%
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)
semilogx(ws,abs(h)); grid on;
subplot(212)
semilogx(ws,angle(h)/pi*180); grid on;
Os polinômios de Chebyshev de primeira ordem são definidos pela relação recursiva: Os primeiros cinco polinômios de Chebyshev de primeira ordem são:
%% 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');
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))
|
Unidade 3
Avaliações
- Entrega dos diversas Atividades Extraclasse ao longo do semestre.
- Provas escritas A1 e A2
- Entrega do Projeto Final. O projeto é avaliado nos quesitos:
- 1) Implementação do Sistema,
- 2) Documentação,
- 3) Avaliação Global do aluno no projeto.
- Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N). A entrega, detalhes e prazos de cada AE serão indicados na plataforma Moodle
Referências Bibliográficas
- ↑ 1,0 1,1 1,2 1,3 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 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