Mudanças entre as edições de "PSD29007-Engtelecom(2018-2) - Prof. Marcos Moecke"
(→ATUAL) |
|||
(83 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
==Registro on-line das aulas== | ==Registro on-line das aulas== | ||
− | {{collapse top | + | {{collapse top | Unidade 1}} |
===Unidade 1=== | ===Unidade 1=== | ||
;Aula 1 (26 jul): | ;Aula 1 (26 jul): | ||
Linha 16: | Linha 16: | ||
:EXEMPLOS: | :EXEMPLOS: | ||
* Leia com atenção e execute o exemplo (Moving-Avarage Filter) na página de help da função [http://www.mathworks.com/help/matlab/ref/filter.html filter]. | * Leia com atenção e execute o exemplo (Moving-Avarage Filter) na página de help da função [http://www.mathworks.com/help/matlab/ref/filter.html filter]. | ||
+ | |||
+ | ;Aula 2 (31 jul): | ||
+ | * Revisão de Sinais e Sistemas no tempo discreto em Matlab: | ||
* Leia com atenção o help [https://www.mathworks.com/help/matlab/examples/using-fft.html 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. | * Leia com atenção o help [https://www.mathworks.com/help/matlab/examples/using-fft.html 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 [http://www.mathworks.com/help/matlab/learn_matlab/help.html Help], . Também gostaria de lembra-los que a tecla F9 executa o código destacado no Help. [http://www.mathworks.com/help/matlab/learn_matlab/scripts.html Programação com scripts .m]. | * Para melhorar o desempenho no Matlab recomendo que leiam a pagina do [http://www.mathworks.com/help/matlab/learn_matlab/help.html Help], . Também gostaria de lembra-los que a tecla F9 executa o código destacado no Help. [http://www.mathworks.com/help/matlab/learn_matlab/scripts.html Programação com scripts .m]. | ||
+ | :* Leia sobre [https://en.wikipedia.org/wiki/Sunspot 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 [https://www.mathworks.com/help/matlab/ref/fft.html fft] | ||
+ | {{collapse top| Exemplo de uso da FFT}} | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% 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(211); | ||
+ | plot(1000*t(1:200),X(1:200)) | ||
+ | title('Signal Corrupted with Zero-Mean Random Noise') | ||
+ | xlabel('t (milliseconds)') | ||
+ | ylabel('X(t)') | ||
+ | |||
+ | %% 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); | ||
+ | |||
+ | % 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(212); | ||
+ | plot(f,P1) | ||
+ | ylim([0 1.05]) | ||
+ | title('Single-Sided Amplitude Spectrum of X(t)') | ||
+ | xlabel('f (Hz)') | ||
+ | ylabel('|P1(f)|') | ||
+ | |||
+ | % 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) | ||
+ | title('Single-Sided Amplitude Spectrum of S(t)') | ||
+ | xlabel('f (Hz)') | ||
+ | ylabel('|P1(f)|') | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | :* 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 <math>s_1(t) = cos (2\pi \times 3 t)</math> (3 Hz) e um sinal <math>s_2(t) = cos (2\pi \times 7 t)</math> (7 Hz) são idênticas quando amostrado com um sinal de 10 Hz. | ||
+ | |||
+ | {{collapse top| Experimento 1.2}} | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | % 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') | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
:'''DICAS:''' | :'''DICAS:''' | ||
Linha 24: | Linha 114: | ||
*No help do Matlab, usando o botão ['''Open this Example'''], é possível executar o código seção a seção. | *No help do Matlab, usando o botão ['''Open this Example'''], é possível executar o código seção a seção. | ||
− | :* | + | ;Aula 3 (2 ago): |
+ | *Revisão de Sinais e Sistemas no tempo discreto em Matlab: | ||
+ | :* Filtragem de Sinais (Experimentos 1.3, 2.1 e 2.2) | ||
+ | :* Consulte a documentação do Matlab sobre [http://www.mathworks.com/access/helpdesk/help/techdoc/ref/roots.html roots], [http://www.mathworks.com/help/matlab/ref/poly.html poly], [http://www.mathworks.com/help/matlab/ref/linspace.html linspace], [http://www.mathworks.com/help/matlab/ref/logspace.html logspace], [http://www.mathworks.com/help/matlab/ref/residue.html residue], [http://www.mathworks.com/help/signal/ref/residuez.html residuez], [http://www.mathworks.com/help/matlab/ref/pretty.html pretty], [http://www.mathworks.com/help/matlab/ref/latex.html latex], [http://www.mathworks.com/help/signal/ref/freqs.html freqs], [http://www.mathworks.com/help/signal/ref/freqz.html freqz], [http://www.mathworks.com/help/symbolic/syms.html syms], [http://www.mathworks.com/help/signal/ref/symfun.html symfun], [http://www.mathworks.com/help/signal/ref/zplane.html zplane]. | ||
+ | :* Ver também o [http://www.mathworks.com/help/matlab/ref/publish.html Publish] para a geração automática de relatórios em html, doc, pdf, latex ou ppt. Ver também [http://www.mathworks.com/help/matlab/matlab_prog/publishing-matlab-code.html Publishing MATLAB Code]. | ||
+ | :* Ver pag. 138 a 141 de <ref name="DINIZ2014"/> | ||
+ | {{collapse top | Variação do Experimento 2.2}} | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | % 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') | ||
+ | </syntaxhighlight> | ||
+ | #Verifique a diferença entre os tipos de plots comentados no código. | ||
+ | #substitua o denominador de H(z) por dois polos em [-0.8 -0.8]. | ||
+ | #verifique o que ocorre se forem utilizados polos complexos conjugados [0.3-0.4i 0.3+0.4i 0.1] | ||
+ | #verifique o que ocorre se forem utilizados polos complexos não conjugados [0.3-0.4i 0.3+0.8i] | ||
+ | #verifique o que ocorre se os polos estiverem fora do circulo unitário [1.2 -0.2]. Interprete este resultado | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | :* Consulte a documentação do Matlab sobre [http://www.mathworks.com/help/matlab/ref/zeros.html zeros], [http://www.mathworks.com/help/matlab/ref/ones.html ones], [http://www.mathworks.com/help/matlab/ref/plot.html plot], [http://www.mathworks.com/help/matlab/ref/stem.html stem], [http://www.mathworks.com/help/matlab/ref/subplot.html subplot], [http://www.mathworks.com/help/matlab/ref/filter.html filter]. | ||
+ | :* Para usar melhor a interface do Matlab leia também [http://www.mathworks.com/help/matlab/matlab_prog/run-sections-of-programs.html?searchHighlight=script%20sections Execução de seções e variação de valores nos scripts], e ainda [http://www.mathworks.com/help/matlab/learn_matlab/plots.html Uso de gráficos no Matlab]. | ||
+ | :* Ver pag. 65 a 71 de <ref name="DINIZ2014"> 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 </ref> | ||
+ | :*Ver também [http://www.mathworks.com/help/releases/R2014a/pdf_doc/matlab/index.html PDF Documentation for MATLAB]. Principalmente [http://www.mathworks.com/help/releases/R2014a/pdf_doc/matlab/getstart.pdf MATLAB Primer]. | ||
+ | |||
+ | ;Aula 4 (7 ago): | ||
+ | *Revisão de Sinais e Sistemas no tempo discreto em Matlab: | ||
+ | :* Filtros Digitais ([https://owncloud.ifsc.edu.br/index.php/s/WWY2LWexts8PKDs Experimento 2.3]) | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% 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); | ||
+ | </syntaxhighlight> | ||
+ | :* Diferentes formas de realizar a filtragem de Sinais ( | ||
+ | ::* convolução (conv(x,h)), | ||
+ | ::* 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)) | ||
+ | |||
+ | {{collapse top | Variação do Experimento 3.1}} | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% 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 inpulso 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 | ||
+ | |||
+ | % 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 acontagem e mostrar tempo no console | ||
+ | |||
+ | % filtragem utilizando a equação recursiva | ||
+ | % NOTE: length(y) = length(x) | ||
+ | tic; | ||
+ | y2 = filter(b,1,x); | ||
+ | t(2) = toc; | ||
+ | |||
+ | % 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; | ||
+ | |||
+ | % 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; | ||
+ | |||
+ | % 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') | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | * 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)). | ||
+ | |||
+ | ;Aula 5 (9 ago): | ||
+ | :* Exercício - Sinal DTMF com ruído | ||
+ | ::* Verifique se o Matlab está reproduzindo corretamente o som. | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% 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); | ||
+ | </syntaxhighlight> | ||
+ | ::* Usando o Matlab (ou Audacity) para gerar um sinal [https://pt.wikipedia.org/wiki/DTMF DTMF] correspondente a um número N e adicionar um ruido ao sinal. Opcionalmente utilize um [[Media:DFMT EX1.ogg | sinal DTMF gravado]] | ||
+ | ::* Utilizar uma frequência de amostragem de 8000Hz de fazer a duração do sinal igual a 2 segundos. | ||
+ | <center> [[Arquivo:audacity_DTMF.png | Sinal 1234567890*# | 600 px]] </center> | ||
+ | ::* Para adicionar o ruído utilize a função y = [http://www.mathworks.com/help/comm/ref/awgn.html awgn](x,snr), ou y = x + nivel*[http://www.mathworks.com/help/matlab/ref/randn.html randn](n). | ||
+ | |||
+ | ::* Observe este sinal no domínio do tempo (DT) e domínio da frequência (DF). | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %% 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]); | ||
+ | </syntaxhighlight> | ||
+ | :* Utilizar no Audacity um sinal DTMF ("1234567890") com fa= 8kHz | ||
+ | ::* Visualizar no domínio do tempo e frequência. | ||
+ | ::* Realizar a filtragem passa-baixas com fc = 1066 Hz, (selecionar a maior atenuação permitida) | ||
+ | ::* Realizar a filtragem passa-faixa com f0 = 770 Hz e B = 70Hz (selecionar a maior ordem permitida) | ||
+ | :* Repetir o procedimento anterior para um sinal de ruído branco. | ||
+ | |||
+ | :* Consulte a documentação do Matlab sobre <syntaxhighlight lang=matlab> fft, ifft, fftshift, randn </syntaxhighlight> | ||
+ | :* Consulte a documentação do Matlab sobre <syntaxhighlight lang=matlab> plot, grid, subplot, hold, xlabel, ylabel, title, legend, xlim, ylim, log10, log </syntaxhighlight> | ||
+ | :* Consulte a documentação do Matlab sobre [https://www.mathworks.com/help/matlab/ref/text.html text], [http://www.mathworks.com/help/signal/ref/zp2tf.html zp2tf], [http://www.mathworks.com/help/signal/ref/tf2zp.html tf2zp], [http://www.mathworks.com/help/signal/ref/fftfilt.html fftfilt], [http://www.mathworks.com/help/matlab/ref/awgn.html awgn] | ||
+ | :*Ver pag. 141 a 145 e 230 a 235 de <ref name="DINIZ2014"/> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Unidade 2}} | ||
+ | |||
+ | ===Unidade 2=== | ||
+ | |||
+ | ;Aula 6 (14 ago): | ||
+ | *Filtros Analógicos: | ||
+ | :* Função de transferência | ||
+ | ::<math> H(s) = \frac {c_0 + c_1 s + c_2 s^2 + ... + c_m s^m} {d_0 + d_1 s + d_2 s^2 + ... + d_n s^n}, m \le n</math> | ||
+ | |||
+ | :* Resposta em frequência: para obter a resposta em frequência é necessário avaliar | ||
+ | ::<math>H(j\omega) = H(s)\left|\begin{matrix}\\ s=j\omega \end{matrix}\right.</math> | ||
+ | |||
+ | ::<math> H(j \omega) = \left | H(j \omega) \right | e^{j \phi(\omega)}</math> | ||
+ | |||
+ | ::<math> \left | H(j \omega) \right |^2 = H(j \omega) H(-j \omega)</math> | ||
+ | |||
+ | ::<math> e^{j 2 \phi(\omega)} = \frac {H(j \omega)} {H(-j \omega)}</math> | ||
+ | :* O projeto de filtros analógicos é realizado em 2 etapas: | ||
+ | # projeto de um filtro passa baixas (LP) protótipo normalizado <math> H(p) </math> com frequência de passagem <math> \Omega_s = 1 </math> | ||
+ | # transformação em frequência para o tipo de filtro (LP, HP, BP ou BS) | ||
+ | ::<math> H(s) = H(p)\left|\begin{matrix}\\ p=g(s) \end{matrix}\right. </math> | ||
+ | |||
+ | * Análise básica de filtros analógicos com Matlab. | ||
+ | :Dado um sistema linear invariante no tempo, representado pela função de transferência <math> H(s) </math>, obter a resposta de frequência do sistema (Magnitude e Fase). | ||
+ | ::<math> H(s) = \frac {s + 1} {s^2 + s + 5} </math> | ||
+ | ::<math> H(j\omega) = \frac {s + 1} {s^2 + s + 5}\left|\begin{matrix}\\ s=j\omega \end{matrix}\right.</math> | ||
+ | ::<math> H(j\omega) = \frac{1 + w\, \mathrm{i}}{ - w^2 + w\, \mathrm{i} + 5} </math> | ||
+ | |||
+ | <syntaxhighlight lang=matlab> | ||
+ | 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; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Projeto de filtros analógicos do tipo Butterworth | ||
+ | :* A aproximação de magnitude de filtros analógicos pode ser realizado usando as aproximações de Butterworth, Chebyshev (tipo 1 ou 2) e Cauer. | ||
+ | |||
+ | |||
+ | ;Aula 7 (16 ago): | ||
+ | * Projeto de filtros analógicos do tipo Butterworth, considerando: <math> \omega_p </math> é a frequência de passagem do filtro LP, <math> A_p = 3 dB </math> é a atenuação em dB na frequência de passagem, <math> \omega_s </math> é a frequência de ''stopband'' do filtro, <math> A_s </math> é a atenuação em dB na frequência de ''stopband'', <math> \epsilon = 1 </math>, <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo. | ||
+ | |||
+ | ::*É necessário determinar a ordem <math> n </math> do filtro: | ||
+ | |||
+ | ::<math> n \ge \frac {\log(10^{0.1A_s}-1)} {2 \log \Omega_s} </math> | ||
+ | |||
+ | ::*Em seguida obter os polos do filtro: | ||
+ | |||
+ | ::<math> p_k = e^{\left[ j \frac{(2 k + n - 1)} {2 n} \pi \right]}, k = 1, 2, 3, ... n</math> | ||
+ | |||
+ | ::* Em seguida é necessário obter a função de transferência: | ||
+ | |||
+ | ::<math> H(p)= \frac{1}{D(p)} </math>, onde <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math> | ||
+ | ::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado | ||
+ | |||
+ | ::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math> | ||
+ | |||
+ | |||
+ | ;Aula 8 (21 ago): | ||
+ | * Projeto de filtros analógicos do tipo Butterworth, considerando: <math> \omega_p </math> é a frequência de passagem do filtro LP, <math> A_p </math> é a atenuação em dB na frequência de passagem, <math> \omega_s </math> é a frequência de ''stopband'' do filtro, <math> A_s </math> é a atenuação em dB na frequência de ''stopband'', <math> \epsilon = \sqrt{10^{0.1A_p}-1 } </math>, <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo. | ||
+ | |||
+ | ::*É necessário determinar a ordem <math> n </math> do filtro: | ||
+ | |||
+ | ::<math> n \ge \frac {\log[(10^{0.1A_s}-1)/(10^{0.1A_p}-1)]} {2 \log \Omega_s} </math> | ||
+ | |||
+ | ::*Em seguida obter os polos do filtro: | ||
+ | |||
+ | ::<math> p_k = \epsilon^{(-1/n)} e^{\left[ j \frac{(2 k + n - 1)} {2 n} \pi \right]}, k = 1, 2, 3, ... n</math> | ||
+ | |||
+ | ::* Em seguida é necessário obter a função de transferência: | ||
+ | |||
+ | ::<math> H(p)= \frac{k}{D(p)} </math>, onde <math> k=\prod_{k-1}^{n} \left (-p_{k} \right ) = \epsilon^{-1}</math> e <math> D(p)=\prod_{k-1}^{n} \left ( p-p_{k} \right ) </math>. | ||
+ | ::NOTA: o valor <math> k </math> também pode ser obtido a partir de <math> {D(p)} </math>, pois corresponde ao último termo do polinômio <math> {D(end)} </math>. | ||
+ | |||
+ | ::* No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado | ||
+ | |||
+ | ::<math>H(s) = H(p)\left|\begin{matrix} \\ p=\frac{s}{\omega_p} \end{matrix}\right. </math> | ||
+ | :*Ver [[Uso do calculo simbólico na Matlab]] | ||
+ | :*Ver pag. 186 a 204 de <ref name="SHENOI2006"> SHENOI, B. A. '''Introduction to Digital Signal Processing and Filter Design'''. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822 </ref> | ||
+ | <syntaxhighlight lang=matlab> | ||
+ | %Butterworth lowpass Responses (db) | ||
+ | w = 0.1:0.01:10; | ||
+ | H=inline('10*log10(1./(1+w.^(2*n)))','w','n'); | ||
+ | for k = 1:1:10 | ||
+ | semilogx(w,H(w,k)); hold on; | ||
+ | end | ||
+ | grid on | ||
+ | |||
+ | %Butterworth lowpass Responses (linear) | ||
+ | w = 0.1:0.01:2; | ||
+ | H=inline('1./(1+w.^(2*n))','w','n'); | ||
+ | for k = 1:1:10 | ||
+ | plot(w,H(w,k)); hold on; | ||
+ | end | ||
+ | grid on | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | ;Aula 9 (23 ago): | ||
+ | * Projeto de filtros analógicos do tipo Chebyshev I. | ||
+ | :* Polinômios de Chebyshev: | ||
+ | Os polinômios de Chebyshev de primeira ordem são definidos pela relação recursiva: | ||
+ | :<math>C_0(\Omega) = 1 \,\!</math> | ||
+ | :<math>C_1(\Omega) = \Omega \,\!</math> | ||
+ | :<math>C_{n}(\Omega) = 2 \times C_{n-1}(\Omega) - C_{n-2}(\Omega). \,\!</math> | ||
+ | |||
+ | Os primeiros cinco polinômios de Chebyshev de primeira ordem são: | ||
+ | :<math> C_0(\Omega) = 1 \,</math> | ||
+ | :<math> C_1(\Omega) = \Omega \,</math> | ||
+ | :<math> C_2(\Omega) = 2\Omega^2 - 1 \,</math> | ||
+ | :<math> C_3(\Omega) = 4\Omega^3 - 3\Omega \,</math> | ||
+ | :<math> C_4(\Omega) = 8\Omega^4 - 8\Omega^2 + 1 \,</math> | ||
+ | :<math> C_5(\Omega) = 16\Omega^5 - 20\Omega^3 + 5\Omega \,</math> | ||
+ | |||
+ | ::*Determine a ordem mínima necessária considerando: <math> \omega_p </math> é a frequência de passagem do filtro LP, <math> A_p </math> é a atenuação em dB na frequência de passagem, <math> \omega_s </math> é a frequência de ''stopband'' do filtro, <math> A_s </math> é a atenuação em dB na frequência de ''stopband'', <math> \epsilon = \sqrt{10^{0.1A_p}-1 } </math>, <math> \Omega_s = \frac {\omega_s} {\omega_p} </math>, <math> \Omega_p = \frac {\omega_p} {\omega_p} = 1 </math> são as frequências de passagem e ''stopband'' do filtro protótipo. | ||
+ | ::<math> n \ge \frac {\cosh^{-1} \sqrt{(10^{0.1A_s}-1)/(10^{0.1A_p}-1)}} {\cosh^{-1} \Omega_s} </math> | ||
+ | |||
+ | ::*Em seguida obter os polos do filtro: | ||
+ | |||
+ | ::<math> p_k = -\sinh(\varphi_2) \sin(\theta_k)+ j \cosh(\varphi_2) \cos(\theta_k) \ \ \ \ \ k = 1, 2, 3, ... n</math>, onde | ||
+ | ::<math> \theta_k = \left ( \frac{(2k-1)\pi}{2n} \right ) </math> | ||
+ | ::<math> \varphi_2 = \frac{1}{n} \sinh^{-1}\left (\frac{1}{\epsilon} \right ) </math> | ||
+ | |||
+ | :<math>\left | H( j\Omega ) \right | ^2 = 1 \text{para n impar}, \frac {1}{1+\epsilon^2} \text{para n par} </math> | ||
+ | |||
+ | :<math>\left | H(0) \right | ^2 = \frac{H_0^2}{ 1+ \epsilon^2 C_n ^2 \left ( \Omega_0 \right )} </math> | ||
+ | |||
+ | :* Uso das funções [http://www.mathworks.com/help/signal/ref/buttord.html buttord], [http://www.mathworks.com/help/signal/ref/butter.html butter], [http://www.mathworks.com/help/signal/ref/cheb1ord.html cheb1ord], [http://www.mathworks.com/help/signal/ref/cheby1.html cheby1], [http://www.mathworks.com/help/signal/ref/cheb2ord.html cheb2ord], [http://www.mathworks.com/help/signal/ref/cheby2.html cheby2], [http://www.mathworks.com/help/signal/ref/ellipord.html ellipord], [http://www.mathworks.com/help/signal/ref/ellip.html ellip] para o projeto de filtros analógicos com Matlab (é necessário usar o parâmetro ''''s''''). | ||
+ | :* Ler '''Comparison of Analog IIR Lowpass Filters''' em [http://www.mathworks.com/help/signal/ref/ellip.html ellip] | ||
+ | :* Uso das funções [http://www.mathworks.com/help/signal/ref/freqs.html freqs], "zplane", [http://www.mathworks.com/help/signal/ref/fvtool.html fvtool] na análise da resposta em frequência de filtros analógicos. | ||
+ | |||
+ | *Exemplos de projeto de filtro passa-baixas com frequência de passagem de 16000 rad/s com atenuação máxima de 0.3 dB, frequência de rejeição de 20000 rad/s com atenuação mínima de 20 dB; e ganho em DC de 3 dB. | ||
+ | |||
+ | |||
+ | ;Aula 10 (28 ago): | ||
+ | * Projeto de filtros analógicos do tipo Butterworth, Chebyshev I e II e Cauer (eliptico). | ||
+ | <syntaxhighlight lang=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'); | ||
+ | </syntaxhighlight> | ||
+ | :*Ver pag. 204 a 208 de <ref name="SHENOI2006"/> | ||
+ | |||
+ | *Filtros Analógicos: | ||
+ | :* Transformações de frequência de filtros analógicos | ||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-baixas (<math> \omega_p</math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac{s}{\omega_p}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \frac{\omega_s}{\omega_p}</math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-altas (<math> \omega_p</math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac{\omega_p} {s}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \frac{\omega_p}{\omega_s}</math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-faixa (<math> \omega_0 </math> e <math> B </math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac{s^2 + \omega_0^2} {B s}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \Bigg|\frac{-\omega_s^2 + \omega_0^2} {B \omega_s}\Bigg|</math> | ||
+ | :: onde <math> B = \omega_{p2} - \omega_{p1}</math> e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> rejeita-faixa (<math> \omega_0 </math> e <math> B </math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac {B s} {s^2 + \omega_0^2}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \Bigg| \frac {B \omega_s} {-\omega_s^2 + \omega_0^2}\Bigg|</math> | ||
+ | :: onde <math> B = \omega_{p2} - \omega_{p1}</math> e <math> \omega_0 = \sqrt{\omega_{p2} \omega_{p1}}</math> | ||
+ | |||
+ | ;Aula 11 (30 ago): | ||
+ | :* Uso das funções [http://www.mathworks.com/help/matlab/ref/semilogx.html semilogx], [http://www.mathworks.com/help/matlab/ref/semilogy.html semilogy],[http://www.mathworks.com/help/matlab/ref/logspace.html logspace], [http://www.mathworks.com/help/matlab/ref/linspace.html linspace]. | ||
+ | :*Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design], [http://www.mathworks.com/help/signal/ug/special-topics-in-iir-filter-design.html Special Topics in IIR Filter Design]. | ||
+ | ::*Funções para projeto do filtro protótipo analógico passa-baixas: [http://www.mathworks.com/help/signal/ref/buttap.html buttap], [http://www.mathworks.com/help/signal/ref/cheb1ap.html cheb1ap], [http://www.mathworks.com/help/signal/ref/cheb2ap.html cheb2ap], [http://www.mathworks.com/help/signal/ref/ellipap.html ellipap] | ||
+ | ::*Funções de transformação de frequencia: [http://www.mathworks.com/help/signal/ref/lp2lp.html lp2bp], [http://www.mathworks.com/help/signal/ref/lp2hp.html lp2bs], lp2hp, lp2lp | ||
+ | :*Ver pag. 208 a 218 de <ref name="SHENOI2006"/> | ||
+ | |||
+ | *Exemplos de Filtros Analógicos: | ||
+ | :* Exemplo 1: Filtro passa-baixas (<math> f_p </math> = 941Hz, <math> f_s </math> = 1209 Hz, <math> A_p </math> = 1 dB, <math> A_s </math> = 20 dB) | ||
+ | :* Exemplo 2: Filtro passa-altas (<math> f_p </math> = 1209 Hz, <math> f_s </math> = 941Hz, <math> A_p </math> = 1 dB, <math> A_s </math> = 20 dB) | ||
+ | :* Exemplo 3: Filtro passa-faixa (<math> f_{p1} </math> = 811 Hz, <math> f_{p2} </math> = 895,5 Hz<math> <math> f_{s1} </math> = 770 Hz, <math> f_{s2} </math> = 941 Hz, <math> A_p </math> = 1 dB, <math> A_r </math> = 30 dB) | ||
+ | ::'''NOTA:''' | ||
+ | :::*No calculo do filtro lembre-se de usar as frequências angulares para <math> \omega_p </math>, <math> \omega_s </math>, <math> B\omega </math>, <math> \omega_0 </math>. | ||
+ | :::*onde <math> f_p </math> (<math> \omega_p </math>) é a frequência de passagem em Hz (rad/s), <math> f_s </math> (<math> \omega_s </math>) é a frequência de rejeição em Hz (rad/s), <math> f_0 </math> (<math> \omega_0 </math>) é a frequência central em Hz (rad/s), <math> B </math> (<math> B\omega </math>) é a largura de banda em Hz (rad/s). | ||
+ | :::*Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos. | ||
+ | |||
+ | ;Aula 12 (4 set): | ||
+ | *Filtros Digitais: Filtros IIR: transformações do tempo contínuo no tempo discreto | ||
+ | :*Transformação invariante ao impulso (pode ser usada apenas para filtros com forte atenuação em frequência altas, ex: passa-baixas e passa-faixa) | ||
+ | :*Transformação bilinear (pode ser usada para todos tipos de filtro) | ||
+ | ::*Obter a especificação do filtro em angulo entre 0 e 1, onde 1 corresponde a metade da frequência de amostragem <math> (fa/2) </math> | ||
+ | ::*Obter o valor desse angulo predistorcido <math> \lambda </math> para compensar a distorção na frequência causada pela transformação bilinear <math> \lambda= 2 tan \left (\frac{\theta \pi}{2} \right ) </math>, onde <math> \theta = \frac{f}{f_a/2} = \frac{\omega}{\omega_a /2} </math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-baixas (<math> \lambda_p</math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac{s}{\lambda_p}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \frac{\lambda_s}{\lambda_p}</math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-altas (<math> \lambda_p</math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac{\lambda_p} {s}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \frac{\lambda_p}{\lambda_s}</math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> passa-faixa (<math> \lambda_0 </math> e <math> B </math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac{s^2 + \lambda_0^2} {B s}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \Bigg|\frac{-\lambda_s^2 + \lambda_0^2} {B \lambda_s}\Bigg|</math> | ||
+ | :: onde <math> B = \lambda_{p2} - \lambda_{p1}</math> e <math> \lambda_0 = \sqrt{\lambda_{p2} \lambda_{p1}}</math> | ||
+ | |||
+ | :*passa-baixas (<math> \Omega_p= 1 </math>) -> rejeita-faixa (<math> \lambda_0 </math> e <math> B </math>) | ||
+ | ::*Substituição de variáveis <math> p = \frac {B s} {s^2 + \lambda_0^2}</math> | ||
+ | ::*Cálculo do protótipo com <math> \Omega_s = \Bigg| \frac {B \lambda_s} {-\lambda_s^2 + \lambda_0^2}\Bigg|</math> | ||
+ | :: onde <math> B = \lambda_{p2} - \lambda_{p1}</math> e <math> \lambda_0 = \sqrt{\lambda_{p2} \lambda_{p1}}</math> | ||
+ | |||
+ | :*Ver pag. 219 a 229 de <ref name="SHENOI2006"/> | ||
+ | :*Ver pag. 403 a 415 e 434 a 435 de <ref name="DINIZ2014"/> | ||
+ | |||
+ | ;Aula 13 e 14 (6 e 11 set): | ||
+ | *Filtros Digitais: Filtros IIR: Uso do Matlab. | ||
+ | ::*Ver as funções de discretização usadas no Matlab: [http://www.mathworks.com/help/signal/ref/bilinear.html bilinear], [http://www.mathworks.com/help/signal/ref/impinvar.html impinvar] | ||
+ | |||
+ | :* Ver em [http://www.mathworks.com/help/signal/ug/iir-filter-design.html IIR Filter Design] | ||
+ | :* Uso das funções [http://www.mathworks.com/help/signal/ref/buttord.html buttord], [http://www.mathworks.com/help/signal/ref/butter.html butter], [http://www.mathworks.com/help/signal/ref/cheb1ord.html cheb1ord], [http://www.mathworks.com/help/signal/ref/cheby1.html cheby1], [http://www.mathworks.com/help/signal/ref/cheb2ord.html cheb2ord], [http://www.mathworks.com/help/signal/ref/cheby2.html cheby2], [http://www.mathworks.com/help/signal/ref/ellipord.html ellipord], [http://www.mathworks.com/help/signal/ref/ellip.html ellip] para o projeto de filtros IIR digitais (sem o parâmetro ''''s''''). | ||
+ | ::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 <math> b(n) </math> e denominador <math> a(n) </math> de <math> H(z) </math> . | ||
+ | |||
+ | :* Outros tipos de filtros IIR: [http://www.mathworks.com/help/signal/ref/yulewalk.html yulewalk], [https://www.mathworks.com/help/dsp/ref/iirnotch.html iirnotch], [https://www.mathworks.com/help/dsp/ref/iirpeak.html iirpeak], [https://www.mathworks.com/help/dsp/ref/iircomb.html iircomb],[http://www.mathworks.com/help/signal/ref/filtfilt.html filtfilt], [http://www.mathworks.com/help/signal/ref/maxflat.html maxflat], [http://www.mathworks.com/help/signal/ref/invfreqz.html invfreqz] e outros filtros de [http://www.mathworks.com/help/signal/ug/parametric-modeling.html modelagem paramétrica]. | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top| Unidade 3}} | ||
+ | |||
+ | ===Unidade 3=== | ||
+ | |||
+ | ;Aula 15 (13 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) | ||
+ | |||
+ | ;Aula 16 (18 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> | ||
+ | |||
+ | ;Aula 17 (20 set) | ||
+ | Aula suspenda - participação no SEPEI 2018 | ||
+ | |||
+ | ;Aula 18 (25 set) | ||
+ | *Filtros Digitais: Projeto de filtro FIR utilizando janelas temporais fixas | ||
+ | |||
+ | ;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 - 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 5 - Corrija o valor de projeto dos coeficientes Clp do filtro ideal, a janela e a resposta ao impulso. | ||
+ | ::* Repita o PASSO 3 até 5, até obter um filtro que atenda as especificações de Dw. | ||
+ | ::* PASSO 6 - 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 (27 set): | ||
+ | *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 20 (02 out) | ||
+ | *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 21 (04 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 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> | ||
+ | |||
+ | ;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 top| Unidade 4}} | ||
+ | |||
+ | ===Unidade 4=== | ||
+ | ;Aula 29 (1 nov): | ||
+ | *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 30-31 (6-8 nov): | ||
+ | :* 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. | ||
+ | :* 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 (13 nov) | ||
+ | *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] | ||
+ | |||
+ | ===ATUAL=== | ||
+ | ;Aula 33 (20 nov) | ||
+ | *Utilizando o filtro projetado na AE1, 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, esporte o modelo do filtro para o Simulink. | ||
+ | |||
+ | Gustavo e Kleiton - Fazer a realização do filtro LP (Kaiser) IIR e FIR | ||
+ | Maria e Paulo - Fazer a realização do filtro HP (Kaiser) IIR e FIR | ||
+ | Marina e Renan - Fazer a realização do filtro HP (Kaiser) IIR e FIR | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top| Unidade 5 - PROJETO FINAL}} | ||
+ | |||
+ | ===Unidade 5 - PROJETO FINAL=== | ||
+ | <!-- | ||
+ | ;Aula 30 (15 jun): | ||
+ | *Apresentação do projeto Final | ||
+ | :* Descrição do projeto '''AE3 - Projeto de um Detector de DTMF''' | ||
+ | |||
+ | :* Estudar os blocos do Simulink: [https://www.mathworks.com/help/dsp/ref/timescope.html Time Scope], [https://www.mathworks.com/help/dsp/ref/spectrumanalyzer.html Spectrum Analyzer], [https://www.mathworks.com/help/dsp/ref/sinewave.html Sine Wave], [https://www.mathworks.com/help/dsp/ref/chirp.html Chirp], [https://www.mathworks.com/help/dsp/ref/randomsource.html Random Source], [https://www.mathworks.com/help/dsp/ref/signalfromworkspace.html Signal From Workspace], [https://www.mathworks.com/help/dsp/ref/frommultimediafile.html From Multimedia File]. | ||
+ | |||
+ | ;Aula 31 a 39 (19 jun a 3 jul): | ||
+ | * Aula de projeto (implementação da detector DTMF) | ||
+ | |||
+ | ;Aula 40 (6 jul): | ||
+ | * Apresentação do projeto (avaliação individual) | ||
+ | |||
+ | ;Aula 34 (14 Dez): | ||
+ | :*Uso do HDL Coder | ||
+ | ::* [http://www.mathworks.com/help/hdlcoder/hdl-code-generation-from-simulink.html HDL Code Generation from Simulink] | ||
+ | ::* [http://www.mathworks.com/help/hdlcoder/simulink.html Simulink® blocks supported for HDL code generation] | ||
+ | |||
+ | :* Exemplo simples. | ||
+ | ::* Inicialmente construa a biblioteca de blocos suportados pelo HDLcoder | ||
+ | hdllib [http://www.mathworks.com/help/hdlcoder/ug/show-blocks-supported-for-hdl-code-generation.html Show Blocks Supported for HDL Code Generation] | ||
+ | |||
+ | ::*Construa o modelo mostrado na figura abaixo. (sugestão de frequência do sinal de 100Hz, e frequência de amostragem deve ser de 1000Hz) | ||
+ | <center> | ||
+ | [[Arquivo:teste_sin_HDLcoder.png | 600 px]] | ||
+ | </center> | ||
+ | ::*coloque o modelo em um subsistema e conecte a saída a um '''Time Scope''' | ||
+ | <center> | ||
+ | [[Arquivo:subsistema_teste_sin_HDLcoder.png | 300 px]] | ||
+ | </center> | ||
+ | ::*Salve o modelo como teste_sin_HDLcoder, e em seguida faça o ajuste automático das configurações usando o comando. | ||
+ | hdlsetup('teste_sin_HDLcoder') | ||
+ | ::* Execute o HDLcoder | ||
+ | ::* Siga o fluxo do HDLcoder passo a passo e corrija eventuais problemas conforme indicado nas mensagens de ERRO. | ||
+ | :::* Será necessário mudar o tipo de dado do bloco seno e constante para fix(16). | ||
+ | ::* Após ter concluído com sucesso o fluxo de codificação HDL, vá até a pasta onde os arquivos VHDL foram gerados e observe que devem ser sido gerados os seguintes arquivos (Subsystem_tb_pkg.vhd Subsystem_tb.vhd Subsystem.vhd) na pasta | ||
+ | cd hdl_prj/hdlsrc/teste_sin_HDLcoder | ||
+ | ls *.vhd | ||
+ | |||
+ | ::* Use o ModelSim para compilar os arquivos e em seguida simular | ||
+ | vsim & | ||
+ | |||
+ | ::* No ModelSim execute os seguintes arquivos .do: | ||
+ | Subsystem_compile.do | ||
+ | Subsystem_tb_compile.do | ||
+ | Subsystem_tb_sim.do | ||
+ | |||
+ | ::* Observe que o sinal gerado pelo código VHDL é igual ao sinal calculado pelo Simulink. | ||
+ | <center> | ||
+ | [[Arquivo:teste_sin_ModelSim.png | 600 px]] | ||
+ | </center> | ||
+ | ::*Observe que no arquivo de testbench, existe uma instrução de ASSERT conferindo se os dois sinais são iguais: | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | IF Out1_testFailure = '0' THEN | ||
+ | ASSERT FALSE | ||
+ | REPORT "**************TEST COMPLETED (PASSED)**************" | ||
+ | SEVERITY NOTE; | ||
+ | ELSE | ||
+ | ASSERT FALSE | ||
+ | REPORT "**************TEST COMPLETED (FAILED)**************" | ||
+ | SEVERITY NOTE; | ||
+ | END IF; | ||
+ | </syntaxhighlight> | ||
+ | :* Exemplo mais complexo | ||
+ | ::* Abra o modelo | ||
+ | sfir_fixed | ||
+ | ::* ajuste as configurações | ||
+ | hdlsetup('sfir_fixed') | ||
+ | ::*Siga o tutorial [http://www.mathworks.com/help/hdlcoder/gs/example-generating-hdl-code-from-a-simulink-model.html HDL Code Generation from a Simulink Model] | ||
+ | |||
+ | ;Aula 35 a 37 (26 Jun a 3 Jul): | ||
+ | *Implementação do projeto final. | ||
+ | --> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ==Avaliações== | ||
+ | * Entrega dos diversas Atividades Extraclasse ao longo do semestre. | ||
+ | * 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 | ||
+ | |||
+ | {{collapse top | AP1 - Projeto de Filtros Digitais IIR e FIR (Entrega e prazos ver Moodle)}} | ||
+ | Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR e FIR: | ||
+ | * No caso dos filtros IIR, a metodologia envolve a realização de: (a) projeto de um filtro protótipo analógico passa-baixas H(p); (b) transformação em frequência do filtro H(p) -> H(s), obtendo o filtro LP, HP, BP, BS, conforme o tipo de filtro desejado; (c) transformação do filtro analógico em filtro digital H(s) -> H(z) utilizando a transformação "Bilinear" ou pela transformação "Invariante ao Impulso". | ||
+ | * No caso dos filtros FIR, são solicitadas três técnicas diferentes de projeto de filtro: (a) com janelas fixas, (b) com janela ajustáveis; (b) com o algoritmo de Parks-McCleallan (PM); | ||
+ | |||
+ | ;ESPECIFICAÇÕES: | ||
+ | * Nesta avaliação é solicitado que cada equipe projeto os mesmos filtros IIR e FIR. Os detalhes de cada filtro são indicados na tabela abaixo. Para todos os filtros considere a frequencia de amostragem como sendo <math> f_a = 8 kHz </math>. | ||
+ | Todas equipes tem filtros com As = 20, 30, 40, e Ap = 0.5, 1. 2 | ||
+ | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef" | ||
+ | ! scope="col" width=10% align="left"| Equipe | ||
+ | ! scope="col" width=15% align="center"| Filtro 1 | ||
+ | ! scope="col" width=15% align="center"| Filtro 2 | ||
+ | ! scope="col" width=20% align="center"| Filtro 3 | ||
+ | |- | ||
+ | | Equipe 1 (Maria e Paulo) | ||
+ | | LP - (f1 = 500 Hz; f2 = 800 Hz, Ap = 1 dB, As = 30 dB, GdB = 0 dB) | ||
+ | | HP - (f1 = 500 Hz; f2 = 800 Hz, Ap = 2 dB, As = 20 dB, GdB = 10 dB) | ||
+ | | BP - (f1 = 700 Hz; f2 = 800 Hz, f3 = 900 Hz; f4 = 1150 Hz, Ap = 0.5 dB, As = 40 dB, GdB = 0 dB) | ||
+ | |- | ||
+ | | Equipe 2 (Gustavo e Kleiton) | ||
+ | | LP - (f1 = 1000 Hz; f2 = 1300 Hz, Ap = 2 dB, As = 30 dB, GdB = 5 dB) | ||
+ | | HP - (f1 = 1000 Hz; f2 = 1300 Hz, Ap = 0.5 dB, As = 40 dB, GdB = 0 dB) | ||
+ | | BP - (f1 = 1000 Hz; f2 = 1200 Hz, f3 = 1250 Hz; f4 = 1300 Hz, Ap = 1 dB, As = 20 dB, GdB = 0 dB) | ||
+ | |- | ||
+ | | Equipe 3 (Renan e Marina) | ||
+ | | LP - (f1 = 2800 Hz; f2 = 3200 Hz, Ap = 1 dB, As = 40 dB, GdB = 0 dB) | ||
+ | | HP - (f1 = 2800 Hz; f2 = 3200 Hz, Ap = 0.5 dB, As = 20 dB, GdB = 0 dB) | ||
+ | | BP - (f1 = 3000 Hz; f2 = 3200 Hz, f3 = 3400 Hz; f4 = 3500 Hz, Ap = 2 dB, As = 30 dB, GdB = -10 dB) | ||
+ | |} | ||
+ | |||
+ | :onde: | ||
+ | :: LP (''Low Pass'')- Passa Baixa, HP (''High Pass'')- Passa Altas, BP (''Band Pass'')- Passa Faixa, BS (''Band Stop'')- Rejeita Faixa | ||
+ | :: <math> f_N </math> - são as "N" frequência de especificação do filtro dadas em Hertz (kHz ou MHz); | ||
+ | :: <math> f_p </math> - frequência de passagem; <math> f_r </math> - frequência de rejeição, <math> A_p </math> - Atenuação máxima na banda de passagem (dB), <math> A_r </math> - Atenuação mínima na banda de rejeição (dB), <math> G_p </math> - Ganho médio na banda de passagem (dB). | ||
+ | Alguns detalhes sobre o projeto dos filtros para cada equipe. | ||
+ | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef" | ||
+ | ! scope="col" width=10% align="left"| Equipe | ||
+ | ! scope="col" width=15% align="center"| Filtro 1 | ||
+ | ! scope="col" width=15% align="center"| Filtro 2 | ||
+ | ! scope="col" width=20% align="center"| Filtro 3 | ||
+ | |- | ||
+ | | Equipe 1 | ||
+ | | IIR - Chebyshev I, FIR - Janela Fixa | ||
+ | | IIR - Butterworth, FIR - Janela Ajustável | ||
+ | | IIR - Eliptico, FIR - PM | ||
+ | |- | ||
+ | | Equipe 2 | ||
+ | | IIR - Butterworth, FIR - Janela Ajustável | ||
+ | | IIR - Chebyshev II, FIR - Janela Fixa | ||
+ | | IIR - Eliptico, FIR - PM | ||
+ | |- | ||
+ | | Equipe 3 | ||
+ | | IIR - Eliptico, FIR - Janela Fixa | ||
+ | | IIR - Butterworth, FIR - Janela Ajustável | ||
+ | | IIR - Chebyshev II, FIR - PM | ||
+ | |} | ||
+ | |||
+ | :* Os filtros IIR do tipo Butterworth devem ser todos os calculados efetuados a partir das equações, enquanto os demais filtros IIR podem ser projetados obtendo a função H(p) diretamente com funções do Matlab. | ||
+ | :* O filtro FIR de janela fixa ou ajustável podem ter a janela calculada diretamente usando funções do Matlab. Nos dois casos é necessário calcular os valores dos coeficientes da série de Fourier. | ||
+ | :* No caso das janelas fixas, utilize a janela mais adequada para a especificação do filtro (que resulta na menor ordem). | ||
+ | :* No caso das janelas ajustáveis, podem ser utilizadas kaiser, chebyshev, gauss, tukey, ou taylor. | ||
+ | :* O filtro FIR BP deve ser projetado usando o algoritmo de Parks-McCleallan. | ||
+ | :* Em todos os filtros busque obter a menor ordem que possibilite ter uma resposta de frequência que atende a sua especificação. | ||
+ | :* Se achar necessário utilize o FVTOOL e o FDAtool para a análise dos filtros. | ||
+ | :* Se desejar use o Simulink para testar a resposta de frequencia dos filtros projetados (2 PONTOS de BONUS). | ||
+ | |||
+ | ;ENTREGAS: | ||
+ | :* Deverá ser feita um quadro comparativo dos filtros FIR x IIR indicando no mínimo a ordem dos filtros. | ||
+ | :* A resposta em frequência dos filtros IIR e FIR do mesmo tipo (ganho em dB e fase) deverá ser mostrada em um mesmo gráfico. | ||
+ | :* 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 conforme ilustrado nas figuras abaixo: | ||
+ | [[Arquivo:KaiserFIR.png| 600 px | Resposta em frequência - Ganho em dB ]] [[Arquivo:KaiserFIRZoom.png |600 px | Detalhe da banda de passagem da resposta em frequência - Ganho em dB]] | ||
+ | :* Também deverá ser mostrado o atraso de grupo dos filtros (ver função [https://www.mathworks.com/help/signal/ref/grpdelay.html grpdelay] do Matlab) | ||
+ | :* O diagrama dos pólos e zeros dos filtros | ||
+ | :* Utilize escala em dB para as respostas em frequência. | ||
+ | :* Tanto no resposta em frequência como no atraso de grupo use nas abcissas utilize uma escala em Hz (kHz ou MHz) adequada ao seu caso. | ||
+ | :* 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 e metodologia utilizada devem estar documentados. | ||
+ | :* Compare os vários aspectos diferentes dos filtros e faça uma análise sobre as diferenças entre os IIR e FIR. | ||
+ | :* Envie o relatório em pdf e os arquivos ".m" usando a plataforma Moodle. | ||
+ | {{collapse bottom}} | ||
+ | ===ATUAL=== | ||
+ | {{collapse top | expand=true| AP2 - Projeto de um Detector de DTMF (Entrega e prazos ver Moodle)}} | ||
+ | * Projeto de um receptor [https://pt.wikipedia.org/wiki/DTMF DTMF]. | ||
+ | :* cada equipe deverá projetar os discriminadores de frequências do sistema DTMF que permitam discriminar os números indicados na tabela abaixo. | ||
+ | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef" | ||
+ | ! scope="col" width=20% align="left"| Equipe | ||
+ | ! scope="col" width=20% align="center"| Teclas | ||
+ | ! scope="col" width=20% align="center"| Fator subamostragem (N) | ||
+ | |- | ||
+ | | E1 || 7, 9, 5, 2, # || 6 | ||
+ | |- | ||
+ | | E2 || 4, 5, 3, 8, 0 || 10 | ||
+ | |- | ||
+ | | E3 || 2, 3, 4, 9, * || 14 | ||
+ | |} | ||
+ | |||
+ | ::* A frequência de amostragem ''fa2'' do sinal de entrada no sistema mostrado abaixo é de 44,1/N kHz, no entanto o sinal gerado no AUDACITY é amostrado em fa1 = 44,1 kHz, portanto antes do circuito abaixo é necessário incluir um filtro antialiasing (low pass) com fc = (44,1/2)/N kHz e um circuito para subamostrar (downsampling) o sinal com fa1 = 44,1 kHz. Esse filtro deverá ser do tipo IIR, sendo de aproximação Butterworth ou Chebyshev tipo 1, para que tenha uma resposta de frequência monotonicamente decrescente após a frequência de corte Assim o sistema terá duas frequências de amostragem, '''fa1 = 44,1 kHz''' até o subamostrador e '''fa2 = 44,1/N kHz''' depois deste circuito. | ||
+ | :* As especificações do discriminador de frequência, mostrado na figura, são: | ||
+ | <center> [[Arquivo:DiscriminadorDTMF.png]]</center> | ||
+ | De acordo com [http://www.etsi.org/deliver/etsi_es/201200_201299/20123503/01.01.01_50/es_20123503v010101m.pdf ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers] as características dos componentes do receptor são: | ||
+ | <code> | ||
+ | — low-pass filter F <= 960 Hz, no entanto adotaremos a frequência '''sqrt(941*1209)'''; | ||
+ | — high-pass filter F >= 1190 Hz, no entanto adotaremos a frequência '''sqrt(941*1209)'''; | ||
+ | — two threshold comparators; | ||
+ | — eight channel filters (two pole filters: -1,5 dB band pass limits at the nominal frequency ± (1,5%+ 2 Hz)); | ||
+ | — eight rectifiers; | ||
+ | — eight single pole (RC) filters, time constant \tau = 4 a 5 ms. | ||
+ | The thresholds and decision logic are regulated in order not to recognize character signals with a level below -30 dBm | ||
+ | and to recognize valid character signals with a level in the range of -4 dBm to -30 dBm. | ||
+ | </syntaxhighlight> | ||
+ | De acordo com [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Transmitters] as características dos componentes do transmissor são: | ||
+ | |||
+ | <code> | ||
+ | High group: signalling frequencies , which have nominal values of 1 209 Hz, 1 336 Hz, 1 477 Hz and 1 633 Hz | ||
+ | Low group: signalling frequencies, which have nominal values of 697 Hz, 770 Hz, 852 Hz and 941 Hz | ||
+ | The tolerances of the output frequencies shall be within ±1,5 % of their nominal values. | ||
+ | The sending levels when the DTMF transmitter is terminated with the reference impedance ZR,shall be: | ||
+ | - for the high frequency group: -9,0 dBV, +2,0 dB / -2,5 dB; | ||
+ | - for the low frequency group: -11,0 dBV, +2,5 dB / -2,0 dB | ||
+ | where dBV - Absolute voltage level expressed in decibels relative to 1 volt. | ||
+ | The duration of any individual DTMF tone combination sent shall not be less than 65 ms. | ||
+ | The duration of the pause between any individual DTMF tone combination shall not be less than 65 ms. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ::* Os filtros das linhas e das colunas devem ser do tipo FIR. As diferenças de atraso entre os filtros devem ser compensadas usados elementos de atraso (<math> z^{-n} </math>). | ||
+ | ::* Sugere-se utilizar para o filtro do detector de envoltório um filtro IIR do tipo Butterworth. | ||
+ | ::* O circuito retificador deve se implementado pela função '''abs'''. | ||
+ | ::* O circuito '''TC - Threshold Comparator''' não deve ser implementado, pois tem apenas a função de rejeitar sinais de entrada que estão acima de -3dBm ou abaixo de -40 dBm, | ||
+ | ::* Como sinais de entrada serão utilizados: | ||
+ | :::*1) Um sinal DTMF gerado através da soma das duas frequência correspondente a linha e coluna. | ||
+ | :::*2) Os 5 Sinal de DTMF correspondentes as 5 teclas indicadas para a equipe, com '''duração de 0,5 segundos'''. | ||
+ | :::*3) Um sinal DTMF correspondente a sequencia de teclas "123456789*0#" com '''duração de tom de 65ms e pausa de 65ms''' para cada tecla. (ver [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 2: Transmitters]) | ||
+ | :::*4) Os sinais do item (2) e (3) somados a um ruído branco, cuja relação sinal/ruído deve alterável entre 0 dB até 80 dB. | ||
+ | ::* A seleção do sinal de entrada pode ser feita através de '''manual switch''' ou '''multiport switch'''. | ||
+ | ::* Os discriminadores das linhas e colunas não especificados, deverão ser feitos usando filtros simples centrados nas frequências centrais das linhas e colunas correspondentes, sem a preocupação de atender as bandas de passagem e rejeição. | ||
+ | ::* As entradas DTMF deverão deverão gerar valores binário correspondente 1 => 0001 a 9 => 1001, 0 -> 1010, * => 1011, # => 1100. | ||
+ | ::* Caso nenhuma frequência seja ativada o discriminador deverá indicar um código de "0000" (0); caso seja ativada apenas uma frequência o discriminador deverá indicar um código de ERRO 1 "1101" (13); caso sejam ativados 2 linhas e 1 coluna ou 1 linha e duas colunas o discriminador deverá indicar um código de ERRO 2 "1110" (14); caso contrário o discriminador deverá indicar um código de ERRO 3 "1111" (15); | ||
+ | ::* Neste projeto os sinais de entrada a serem utilizados deverão ser gerados com frequência de amostragem especificada. Antes de realizar o processamento indicado no diagrama do receptor DTMF, deve ser feita uma filtragem passa-baixa com um filtro de no mínimo 2 polos do tipo Butterworth ou Chebychev 1, com fp = (f_s/2)/N kHz, seguido de uma subamostragem '''Downsampling''' de um fator '''N''' para a nova frequência f_s2. | ||
+ | ::* A contante de tempo <math> \Tau = RC </math> é equivalente a uma frequência de corte de <math> w_{c} = 1/(2\pi\Tau) </math> | ||
+ | |||
+ | ::* Após realizada a simulação do sistema detector DTMF, o sistema deverá ser convertido para VHDL utilizando o '''HDL coder'''. | ||
+ | ::* Para comprovar o funcionamento do sistema realize a simulação final do sistema no ModelSim. | ||
+ | |||
+ | ;ENTREGAS: | ||
+ | :* Mostrar a resposta em frequência dos filtros utilizados (IIR ou FIR). | ||
+ | :* Mostrar o atraso de grupo dos filtros. | ||
+ | :* Tanto no resposta em frequência como no atraso de grupo use nas abcissas utilize uma escala em Hz (kHz ou MHz) adequada ao seu caso. | ||
+ | :* Apresentar no Simulink o sistema organizado em subsistemas/áreas. Documentar os vários subsistemas e função dos blocos. | ||
+ | :* Mostre no relatório claramente que o que foi solicitado no projeto está sendo atendido através de testes com o Simulink. | ||
+ | |||
+ | :* 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 e metodologia utilizada devem estar documentados. | ||
+ | |||
+ | :* Envie o relatório em pdf e os arquivos ".m" utilizados na plataforma Moodle. | ||
+ | |||
+ | :* ''(Opcional) As equipes que desejarem poderão programar o hardware de um kit FPGA para conferir o funcionamento do sistema. Sugere-se que a geração dos sinais DTMF seja feita utilizando um app gerador para Smartphone e usada a interface conversora A/D para capturar os sinais de entrada. '' | ||
+ | |||
+ | ;NORMAS DE DTMF: | ||
+ | :* Ver as especificações DTMF em: | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123501/01.01.01_50/es_20123501v010101m.pdf ETSI ES 201 235-1 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 1: General] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123502/01.01.01_60/es_20123502v010101p.pdf ETSI ES 201 235-2 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 2: Transmitters] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123503/01.01.01_50/es_20123503v010101m.pdf ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers] | ||
+ | * [http://www.etsi.org/deliver/etsi_es/201200_201299/20123504/01.01.01_50/es_20123504v010101m.pdf ETSI ES 201 235-4 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 4: Receivers for use in Terminal Equipment for end-to-end signalling] | ||
+ | :* Outros links auxiliares: | ||
+ | *[https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling DTMF] | ||
+ | * [https://en.wikipedia.org/wiki/Time_constant Relação entre constante de tempo e frequencia de corte] | ||
+ | * [http://www.sengpielaudio.com/calculator-db-volt.htm Calculador de dBV] | ||
+ | {{collapse bottom}} | ||
==Referências Bibliográficas== | ==Referências Bibliográficas== |
Edição atual tal como às 13h35min de 29 de novembro de 2018
Registro on-line das aulas
Unidade 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Unidade 1
%% 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;
%Butterworth lowpass Responses (db)
w = 0.1:0.01:10;
H=inline('10*log10(1./(1+w.^(2*n)))','w','n');
for k = 1:1:10
semilogx(w,H(w,k)); hold on;
end
grid on
%Butterworth lowpass Responses (linear)
w = 0.1:0.01:2;
H=inline('1./(1+w.^(2*n))','w','n');
for k = 1:1:10
plot(w,H(w,k)); hold on;
end
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');
|
Unidade 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Unidade 3
L = 64;
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
Aula suspenda - participação no SEPEI 2018
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)
|
Unidade 4 |
---|
Unidade 4
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');
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)
ATUAL
Gustavo e Kleiton - Fazer a realização do filtro LP (Kaiser) IIR e FIR Maria e Paulo - Fazer a realização do filtro HP (Kaiser) IIR e FIR Marina e Renan - Fazer a realização do filtro HP (Kaiser) IIR e FIR |
Unidade 5 - PROJETO FINAL |
---|
Unidade 5 - PROJETO FINAL |
Avaliações
- Entrega dos diversas Atividades Extraclasse ao longo do semestre.
- 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
AP1 - Projeto de Filtros Digitais IIR e FIR (Entrega e prazos ver Moodle) | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR e FIR:
Todas equipes tem filtros com As = 20, 30, 40, e Ap = 0.5, 1. 2
Alguns detalhes sobre o projeto dos filtros para cada equipe.
|
ATUAL
AP2 - Projeto de um Detector de DTMF (Entrega e prazos ver Moodle) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
De acordo com ETSI ES 201 235-3 - Specification of Dual Tone Multi-Frequency (DTMF) Transmitters and Receivers; Part 3: Receivers as características dos componentes do receptor são:
|
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 2,8 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822
- ↑ LATHI, Bhagwandas P. Sinais e Sistemas Lineares. 2. ed. Porto Alegre: Artmed-Bookman, 2007. 856 p. ISBN 978-8560031139