Mudanças entre as edições de "PSD29007-Engtelecom(2019-2) - Prof. Marcos Moecke"
(→ATUAL) |
|||
Linha 1 044: | Linha 1 044: | ||
;Aula 25 (ESTUDOS EXTRACLASSE): | ;Aula 25 (ESTUDOS EXTRACLASSE): | ||
para compensar a palestra da MCC | para compensar a palestra da MCC | ||
+ | --> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Unidade 4 - Realização de Filtros=== | ||
+ | {{collapse top| expand=true | Unidade 4 - Realização de Filtros}} | ||
+ | |||
+ | ====ATUAL==== | ||
+ | ; Aula XX (17 out): | ||
+ | |||
+ | *Realização de Filtros | ||
+ | :* Realização de filtros FIR: Forma Direta. | ||
+ | <center>[[Arquivo:FIR_FD_MathWorks.png |800 px]]</center> | ||
+ | <center> Figura 1 - Realização de filtros FIR na Forma Direta </center> | ||
+ | |||
+ | :* Realização de filtros FIR: Forma Transposta. A transposição consiste na inversão do fluxo de todos os sinais, substituição de nós de soma por derivações e as derivações por soma. A entrada e saída também devem ser invertidas. A realização da transposição não altera o sistema implementado. | ||
+ | |||
+ | <center>[[Arquivo:FIR_FDT_MathWorks.png |800 px]]</center> | ||
+ | <center> Figura 2 - Realização de filtros FIR na Forma Transposta</center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_FDT2_MathWorks.png |800 px]]</center> | ||
+ | <center> Figura 3 - Realização de filtros FIR na Forma Transposta</center> | ||
+ | |||
+ | :* Realização de filtros FIR de fase linear: simétrico tipo I e II e antissimétrico tipo III e IV. | ||
+ | |||
+ | <center>[[Arquivo:FIR_Sym2_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 4 - Realização de filtros FIR de fase linear Simétrico I </center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_Sym1_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 5 - Realização de filtros FIR de fase linear Simétrico II </center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_AntiSym3_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 6 - Realização de filtros FIR de fase linear Antisimétrico III</center> | ||
+ | |||
+ | <center>[[Arquivo:FIR_AntiSym4_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 7 - Realização de filtros FIR de fase linear Antisimétrico IV</center> | ||
+ | :* Realização de Filtros FIR [http://la.mathworks.com/help/dsp/ug/using-filter-designer.html usando o FDATool] | ||
+ | |||
+ | :* Estudar [http://www.mathworks.com/help/simulink/slref/discretefirfilter.html estrutura de filtros disrcetos FIR no Matlab], [http://www.mathworks.com/help/dsp/ref/filterrealizationwizard.html Filter Realization Wizard - Reference], [http://www.mathworks.com/help/dsp/ug/filter-realization-wizard.html Filter Realization Wizard - User Guide]. | ||
+ | :*Ver pag. 303 a 312 de <ref name="SHENOI2006"/>. | ||
+ | |||
+ | :* Realização de Filtros usando o comando [http://www.mathworks.com/help/dsp/ref/realizemdl.html realizemdl] do MatLab | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | |||
+ | Fs = 30000; % Sampling Frequency | ||
+ | Fpass = 12000; % Passband Frequency | ||
+ | Fstop = 13000; % Stopband Frequency | ||
+ | Dpass = 0.01; % Passband Ripple | ||
+ | Dstop = 0.01; % Stopband Attenuation | ||
+ | flag = 'scale'; % Sampling Flag | ||
+ | |||
+ | % Calculate the order from the parameters using KAISERORD. | ||
+ | [N,Wn,BETA,TYPE] = kaiserord([Fpass Fstop]/(Fs/2), [1 0], [Dstop Dpass]); | ||
+ | |||
+ | % Calculate the coefficients using the FIR1 function. | ||
+ | b = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag); | ||
+ | |||
+ | hFIR = dsp.FIRFilter; | ||
+ | hFIR.Numerator = b; | ||
+ | |||
+ | % Para definir diretamente os coeficientes | ||
+ | realizemdl(hFIR) | ||
+ | |||
+ | % Para definir os coeficientes através de uma matriz de entrada | ||
+ | realizemdl(hFIR,'MapCoeffsToPorts','on'); | ||
+ | </syntaxhighlight> | ||
+ | <!-- | ||
+ | ;Aula 26 (22 mai) | ||
+ | :*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 27 e 28 (24 e 29 mai) | ||
+ | *Uso do Simulink | ||
+ | :*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 FDAToll no Simulink[http://la.mathworks.com/help/dsp/gs/design-and-implement-a-filter.html Design a Digital Filter in Simulink]. | ||
+ | :*Tipos de Solver ([http://www.mathworks.com/help/simulink/ug/choosing-a-solver.html Choose a Solver]). | ||
+ | |||
+ | *Realizar a montagem do modelo indicado na figura abaixo e fazer a simulação, usar fa = 8000Hz. | ||
+ | <center> | ||
+ | [[Arquivo:SimulationFilterPSD1.png|800px]] | ||
+ | </center> | ||
+ | '''DICAS:''' | ||
+ | * Ative a visualização das dimensões das portas ['''Display > Signal & Ports > Signal Dimensions'''] ou [ALT]+D+S+D+[ENTER] | ||
+ | * Ative a visualização do tipo de dados das portas ['''Display > Signal & Ports > Port Data Types'''] ou [ALT]+D+S+D+D+[ENTER] | ||
+ | * Ative a visualização da cor para indicar os tempos de amostragem sinais ['''Display > Sample Time > Colors'''] ou [ALT]+D+T+C+[ENTER] | ||
+ | |||
+ | *Fazer a análise no DT e DF para um ruido uniforme (-1 a 1) | ||
+ | <center> | ||
+ | [[Arquivo:DTnoiseFilterPSD1.png|400px]] | ||
+ | [[Arquivo:DFnoiseFilterPSD1.png|400px]] | ||
+ | </center> | ||
+ | *Fazer a análise no DT e DF para um sinal de chirp (0 a 4000Hz) | ||
+ | <center> | ||
+ | [[Arquivo:DTchirpFilterPSD1.png|400px]] | ||
+ | [[Arquivo:DFchirpFilterPSD1.png|400px]] | ||
+ | </center> | ||
+ | |||
+ | ;Aula 29 (31 mai): | ||
+ | :*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]). | ||
+ | :*Uso dos módulos [https://www.mathworks.com/help/dsp/ref/buffer.html buffer] e [https://www.mathworks.com/help/dsp/ref/unbuffer.html unbuffer] para converter entre fluxos de dados de diferentes taxas de frames, ou entre sample-based e frame-based. | ||
+ | |||
+ | :*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 30 (5 jun): | ||
+ | :* Realização de filtros IIR de 2ª ordem: Forma Direta I e II, e Forma Transposta I e II. | ||
+ | :<math> H(z) = \frac{Y(z)}{X(z)}, H(z) = \frac{b_0 z^2 + b_1 z^1 + b_2}{z^2 + a_1 z^1 + a_2}, H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | ::* Separando H(z) em dois blocos <math>\ H(z) = H_1(z) H_2(z) </math>, e obtendo o sinal intermediário W(z) ou Y(z) dependendo da ordem dos blocos. | ||
+ | <center>[[Arquivo:H1_H2_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 7 - Separação do filtro IIR H(z) em H1(z) e H2(z)</center> | ||
+ | |||
+ | : Com o ordenamento dos blocos <math>\ H_1(z) </math> e <math>\ H_2(z) </math> em ordem direta teremos a Forma Direta I: | ||
+ | :<math> H_1(z) = \frac{W(z)}{X(z)} = b_0 + b_1 z^{-1} + b_2 z^{-2} </math> | ||
+ | :<math> H_2(z) = \frac{Y(z)}{W(z)} = \frac{1}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | :Podemos obter a realização de <math>\ H_1(z) </math> na forma direta. | ||
+ | :<math>\ W(z) = (b_0 + b_1 z^{-1} + b_2 z^{-2})X(z) </math> | ||
+ | :Para obter a realização de <math>\ H_2(z) </math> , é necessário reescrever a saída <math>\ Y(z) </math> em função de <math>\ W(z) </math> e das saídas anteriores <math>\ Y(z) z^{-1} </math> e <math>\ Y(z) z^{-2} </math>: | ||
+ | :<math>\ Y(z) = \frac{W(z)}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | :<math>\ Y(z)({1 + a_1 z^{-1} + a_2 z^{-2}}) = W(z) </math> | ||
+ | :<math>\ Y(z) = W(z) - a_1 Y(z) z^{-1} - a_2 Y(z) z^{-2} </math> | ||
+ | <center>[[Arquivo:IIR_FD1_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 8 - Realização de filtros IIR na Forma Direta I</center> | ||
+ | |||
+ | : Com o ordenamento dos blocos <math>\ H_2(z) </math> e <math>\ H_1(z) </math> em ordem reversa teremos a Forma Direta II: | ||
+ | :<math> H_2(z) = \frac{V(z)}{X(z)} = \frac{1}{1 + a_1 z^{-1} + a_2 z^{-2}} </math> | ||
+ | :<math>\ V(z) = X(z) - a_1 V(z) z^{-1} - a_2 V(z) z^{-2} </math> | ||
+ | |||
+ | :<math> H_1(z) = \frac{Y(z)}{V(z)} = b_0 + b_1 z^{-1} + b_2 z^{-2} </math> | ||
+ | :<math>\ Y(z) = (b_0 + b_1 z^{-1} + b_2 z^{-2})V(z) </math> | ||
+ | |||
+ | <center>[[Arquivo:IIR_FD2a_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 9 - Realização de filtros IIR na Forma Direta II</center> | ||
+ | |||
+ | :Considerando que os sinais no centro são idênticos podemos simplificar e obter a Forma Direta II (Canônica): | ||
+ | <center>[[Arquivo:IIR_FD2b_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 10 - Realização de filtros IIR na Forma Direta II Canônica</center> | ||
+ | |||
+ | :Considerando as regras de transposição podemos obter a forma transposta I e II. A transposição consiste na inversão do fluxo de todos os sinais, substituição de nós de soma por derivações e as derivações por soma. A entrada e saída também devem ser invertidas. A realização da transposição não altera o sistema implementado. | ||
+ | |||
+ | <center>[[Arquivo:IIR_FT1_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 11 - Realização de filtros IIR na Forma Transposta I</center> | ||
+ | |||
+ | <center>[[Arquivo:IIR_FT2_MathWorks.png |600 px]]</center> | ||
+ | <center> Figura 12 - Realização de filtros IIR na Forma Transposta II</center> | ||
+ | |||
+ | :* Realização de filtros IIR de ordem maior que 2: Forma Direta I e II, Transposta I e II, Cascata, Paralela | ||
+ | ::*Os filtros IIR de ordem superior a 2 podem ser implementados nas FD I ou II e na FT I ou II. No entanto nessa configuração tendem a ficar instáveis ao terem os coeficientes quantizados, e também terem uma significativa alteração da resposta em frequência. Para reduzir esses problemas uma possível solução é a decomposição em filtros de 2ª ordem para serem associados na forma em Cascata ou Paralela. | ||
+ | |||
+ | ;Aula 31 (7 jun): | ||
+ | :* Ver [http://www.mathworks.com/help/dsp/ref/biquadfilter.html Biquad Filter] | ||
+ | :* Ver funções do Matlab: [http://www.mathworks.com/help/matlab/ref/roots.html roots], [http://www.mathworks.com/help/matlab/ref/poly.html poly], [http://www.mathworks.com/help/signal/ref/residuez.html residuez], [http://www.mathworks.com/help/signal/ref/tf2zp.html tf2zp], [http://www.mathworks.com/help/signal/ref/zp2tf.html zp2tf], [http://www.mathworks.com/help/signal/ref/zp2sos.html zp2sos], [http://www.mathworks.com/help/signal/ref/tf2sos.html tf2sos], [http://www.mathworks.com/help/signal/ref/tf2latc.html tf2latc]. | ||
+ | :* Implementar o exercício 6.3: Forma direta I, Forma direta II, Cascata. | ||
+ | :* Implementar o exercício 6.13: Forma direta I, Cascata e Paralela. | ||
+ | :*Ver pag. 313 a de 353 <ref name="SHENOI2006"/>. | ||
+ | :*Ver pag. 469 a 474 do Lathi <ref name="Lathi2007"> LATHI, Bhagwandas P. '''Sinais e Sistemas Lineares'''. 2. ed. Porto Alegre: Artmed-Bookman, 2007. 856 p. ISBN 978-8560031139 </ref> | ||
+ | *Filtros Digitais: Ferramentas do Matlab para projeto | ||
+ | :*[http://www.mathworks.com/help/signal/ug/practical-introduction-to-digital-filter-design.html Practical Introduction to Digital Filter Design] | ||
+ | :*[http://www.mathworks.com/help/signal/ug/filter-design-gallery.html Filter Design Gallery] | ||
+ | :*Função para projeto de filtros - [http://www.mathworks.com/help/signal/ref/designfilt.html designfilt] | ||
+ | |||
+ | * Realização de filtros FIR: Cascata, Polifase | ||
+ | :*Vantagens do uso de filtro Polifase: | ||
+ | ::1) Quando o sinal será subamostrado (downsampling) de "D" amostras após a filtragem, a complexidade da implementação é reduzida de "D" vezes, pois apenas uma das "fases" precisa ser implementada. | ||
+ | ::2) Para reduzir o harware a ser implementado, é possível implementar apenas uma das "fases" do filtro e trocar "D" vezes os coeficientes. | ||
+ | ::* Ver [http://www.mathworks.com/help/dsp/ref/polyphase.html polyphase], [http://www.mathworks.com/help/dsp/ref/mfilt.firdecim.html mfilt.firdecim], [http://www.mathworks.com/help/dsp/ref/dsp.firdecimator-class.html dsp.FIRDecimator] | ||
+ | |||
+ | |||
+ | ;Aula 32 (12 jun) | ||
+ | *Filtros Digitais: Quantização | ||
+ | :*Ver [https://www.mathworks.com/help/dsp/ref/fixed-point-filter-properties.html Fixed-Point Filter Properties] | ||
+ | :Ver [https://www.mathworks.com/help/dsp/ug/use-fdatool-with-dsp-system-toolbox-software.html?searchHighlight=fdatool&s_tid=doc_srchtitle Use Filter Designer with DSP System Toolbox Software] | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | x=-0.2; | ||
+ | % Word length = 8, fraction length = 7 | ||
+ | q=quantizer([8,7]); | ||
+ | xq=quantize(q,x); | ||
+ | binxq=num2bin(q,xq) | ||
+ | % Word length = 16, fraction length = 15 | ||
+ | q1=quantizer([16 15]); | ||
+ | xq1 = quantize(q1,x); | ||
+ | binxq1=num2bin(q1,xq1) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | :*Ler [http://www.clivemaxfield.com/diycalculator/sp-round.shtml Tipos de arredondamento], [https://www.eetimes.com/document.asp?doc_id=1274485 An introduction to different rounding algorithms] | ||
+ | *Sobre ponto flutuante [https://baseconvert.com/ieee-754-floating-point] | ||
+ | |||
+ | |||
+ | ;Aula 33 (19 jun) | ||
+ | *Utilizando um filtro projetado na AP1, faça a realização desse filtro quantizando-o com o menor número de bits, que preserve a especificação do mesmo. Se necessário o projeto inicial pode ser modificado inserindo ganhos de guarda na passagem, na rejeição, e também uma banda de guarda na especificação inicial das frequências de passagem e rejeição. | ||
+ | *Verifique qual dos filtros IIR ou FIR resulta na menor área para a sua realização. | ||
+ | |||
+ | *Considere que para o número de elementos lógicos utilizados para: | ||
+ | ::Multiplicador => M x 2 x B | ||
+ | ::Somador => S x B | ||
+ | ::Atrasos => A x B | ||
+ | :onde M é o número de multiplicadores, S o número de somadores, A o número de atrasos e B o número de bits em ponto fixo (após a quantização) | ||
+ | *Após a realização do filtro, exporte o modelo do filtro para o Simulink. | ||
--> | --> | ||
{{collapse bottom}} | {{collapse bottom}} |
Edição das 13h48min de 17 de outubro 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
Unidade 3 - Filtros FIR | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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)];
...
L = 64;
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
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;
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;
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)
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));
Para a janela de Kaiser, a estimação do fator e da ordem do filtro são obtidos por:
onde é a atenuação do lóbulo lateral e é a largura da banda de transição em rad/amostra. A janela de Kaiser é definida por:
onde : é a função de Bessel de ordem zero [1] Utilizando o Matlab é possível estimar esses valores utilizando a função kaiserord. Exemplo da obtenção de um filtro passa baixa com , , atenuação de 40 dB na "stopband" fsamp = 8000;
fcuts = [1000 1500];
mags = [1 0];
devs = [0.01 0.01];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
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. 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)
Digital Filters with Linear Phase].
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])
|
Unidade 4 - Realização de Filtros
Unidade 4 - Realização de Filtros |
---|
ATUAL
Fs = 30000; % Sampling Frequency
Fpass = 12000; % Passband Frequency
Fstop = 13000; % Stopband Frequency
Dpass = 0.01; % Passband Ripple
Dstop = 0.01; % Stopband Attenuation
flag = 'scale'; % Sampling Flag
% Calculate the order from the parameters using KAISERORD.
[N,Wn,BETA,TYPE] = kaiserord([Fpass Fstop]/(Fs/2), [1 0], [Dstop Dpass]);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);
hFIR = dsp.FIRFilter;
hFIR.Numerator = b;
% Para definir diretamente os coeficientes
realizemdl(hFIR)
% Para definir os coeficientes através de uma matriz de entrada
realizemdl(hFIR,'MapCoeffsToPorts','on');
|
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 2,4 2,5 2,6 2,7 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822