PSD29007-Engtelecom(2018-1) - Prof. Marcos Moecke

De MediaWiki do Campus São José
Revisão de 14h36min de 31 de julho de 2018 por Moecke (discussão | contribs) (→‎ATUAL)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Registro on-line das aulas

Unidade 1

Unidade 1

Aula 1 (16 fev)
Aula 2 (20 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
  • Explorar a interface do Matlab.
  • Funções de visualização das variáveis no workspace.
  • Execução de instruções passo a passo.
  • Escrita de script .m
  • Uso da execução das seções de um script.
  • Incremento de valor e execução.
EXEMPLOS:
  • Leia com atenção e execute o exemplo (Moving-Avarage Filter) na página de help da função filter.
  • Leia com atenção o help Using FFT, abra o script clicando no botão [Open this Example]. Execute o script seção após seção. Note o uso da fft para determinar a frequência das manchas solares.
  • Para melhorar o desempenho no Matlab recomendo que leiam a pagina do Help, . Também gostaria de lembra-los que a tecla F9 executa o código destacado no Help. Programação com scripts .m.
DICAS:
  • No help on-line da Matworks, usando o botão [Try This Example > Try in your browser], permite executar o código no próprio browser sem ter nenhuma instalação do Matlab. Para verificar que o código realmente é executado mude a amplitude do ruído randômico para 0.1 ou 0.5, insira o comando close all antes da primeira linha, e execute todo o código [Run All]
  • No help do Matlab, usando o botão [Open this Example], é possível executar o código seção a seção.
  • Leia sobre manchas solares para entender o que são os dados do segundo exemplo.
Aula 3 (23 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
Sinais no dominio do tempo e dominio da frequencia. Uso da função fft
Exemplo de uso da FFT
%% Signal in Time Domain 
% Use Fourier transforms to find the frequency components of a signal buried in noise.
% Specify the parameters of a signal with a sampling frequency of 1 kHz and a signal duration of 1.5 seconds
Fs = 1000;            % Sampling frequency                    
T = 1/Fs;             % Sampling period       
L = 1500;             % Length of signal
t = (0:L-1)*T;        % Time vector

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

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

% Plot the noisy signal in the time domain. It is difficult to identify the frequency components by looking at the signal X(t).
subplot(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)|')
  • Amostragem de Sinais (Experimento 1.2)
  • Relembrar teorema da amostragem. Efeito da amostragem abaixo da frequência de Nyquist. Aliasing.
  • Notar que as amostras de um sinal (3 Hz) e um sinal (7 Hz) são idênticas quando amostrado com um sinal de 10 Hz.
%  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')
Aula 4 (27 fev)
  • Revisão de Sinais e Sistemas no tempo discreto em Matlab:
Variação do Experimento 2.2
%  Exemplos e Experimentos baseados no livro:
% DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235.
%% Experimento 2.2
% Resposta em frequencia usando a função freqz
N = 1;
num = [1 0 0 0];
den = poly([0.8 0.2])
%den = [1 0.6 -0.16];
% modo 1
%[H,w]=freqz(num,den,[0:pi/100:N*pi-pi/100]);
%plot(w/pi, abs(H));
% modo 2
%[H,w]=freqz(num,den);
%plot(w/pi, abs(H));
% modo 3
%[H,w]=freqz(num, den, 'whole');
%plot(w/pi, abs(H));
% modo 4
freqz(num, den, 'whole');
figure(2);
zplane(num,den);

%% Resposta em frequencia substituindo z -> e^(jw)
syms z
Hf(z) = symfun(z^2/(z-0.2)/(z+0.8),z);
pretty(Hf)
latex(Hf)
N = 1;
w = [0:pi/100:N*pi-pi/100];
plot(w/pi,abs(Hf(exp(1i*w))))
%title(['$' latex(Hf) '$'],'interpreter','latex')
text(0.2,2,['H(z) = ' '$$' latex(Hf) '$$'],'interpreter','latex')
xlabel(['w/' '$$' '\pi' '$$'],'interpreter','latex')
  1. Verifique a diferença entre os tipos de plots comentados no código.
  2. substitua o denominador de H(z) por dois polos em [-0.8 -0.8].
  3. verifique o que ocorre se forem utilizados polos complexos conjugados [0.3-0.4i 0.3+0.4i 0.1]
  4. verifique o que ocorre se forem utilizados polos complexos não conjugados [0.3-0.4i 0.3+0.8i]
  5. verifique o que ocorre se os polos estiverem fora do circulo unitário [1.2 -0.2]. Interprete este resultado
Aula 5 (2 mar)
  • Revisão de Sinais e Sistemas no tempo discreto em 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);
  • 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))
Variação do Experimento 3.1
%% Variação do Experimento 3.1 do livro:
% DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235.
% FILE: Ex3_1.m
% Exemplificando as possiveis formas de realizar a filtragem de um sinal x(n)

clc; clear all; close all;
%% Definindo valores iniciais
Nh = 10; Nx = 20;
%Nh = 400; Nx = 10000;
x = ones(1,Nx);
% A resposta ao 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')
  • 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 6 (6 mar)
  • Exercício - Sinal DTMF com ruído
  • Verifique se o Matlab está reproduzindo corretamente o som.
%% 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);
  • Usando o Matlab (ou Audacity) para gerar um sinal DTMF correspondente a um número N e adicionar um ruido ao sinal. Opcionalmente utilize um sinal DTMF gravado
  • Utilizar uma frequência de amostragem de 8000Hz de fazer a duração do sinal igual a 2 segundos.
  • Para adicionar o ruído utilize a função y = awgn(x,snr), ou y = x + nivel*randn(n).
  • Observe este sinal no domínio do tempo (DT) e domínio da frequência (DF).
%% 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]);
  • 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
     fft, ifft, fftshift, randn
    
  • Consulte a documentação do Matlab sobre
     plot, grid, subplot, hold, xlabel, ylabel, title, legend, xlim, ylim, log10, log
    
  • Consulte a documentação do Matlab sobre text, zp2tf, tf2zp, fftfilt, awgn
  • Ver pag. 141 a 145 e 230 a 235 de [1]
Unidade 2

Unidade 2

Aula 7 a 9 (9, 13 e 16 mar)
  • Filtros Analógicos:
  • Função de transferência
  • Resposta em frequência: para obter a resposta em frequência é necessário avaliar
  • O projeto de filtros analógicos é realizado em 2 etapas:
  1. projeto de um filtro passa baixas (LP) protótipo normalizado com frequência de passagem
  2. transformação em frequência para o tipo de filtro (LP, HP, BP ou BS)
  • Análise básica de filtros analógicos com Matlab.
Dado um sistema linear invariante no tempo, representado pela função de transferência , obter a resposta de frequência do sistema (Magnitude e Fase).
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;
  • 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.
  • Projeto de filtros analógicos do tipo Butterworth, considerando: é a frequência de passagem do filtro LP, é a atenuação em dB na frequência de passagem, é a frequência de stopband do filtro, é a atenuação em dB na frequência de stopband, , , são as frequências de passagem e stopband do filtro protótipo.
  • É necessário determinar a ordem do filtro:
  • Em seguida obter os polos do filtro:
  • Em seguida é necessário obter a função de transferência:
, onde
  • No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado
  • Projeto de filtros analógicos do tipo Butterworth, considerando: é a frequência de passagem do filtro LP, é a atenuação em dB na frequência de passagem, é a frequência de stopband do filtro, é a atenuação em dB na frequência de stopband, , , são as frequências de passagem e stopband do filtro protótipo.
  • É necessário determinar a ordem do filtro:
  • Em seguida obter os polos do filtro:
  • Em seguida é necessário obter a função de transferência:
, onde e .
  • No caso de um filtro LP é necessário ainda obter a função de transferência do filtro especificado
  • Ver pag. 186 a 204 de [2]
%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
Aula 10 e 11 (20 e 23 mar)
  • Projeto de filtros analógicos do tipo Chebyshev I.
  • Determine a ordem mínima necessária considerando: é a frequência de passagem do filtro LP, é a atenuação em dB na frequência de passagem, é a frequência de stopband do filtro, é a atenuação em dB na frequência de stopband, , , são as frequências de passagem e stopband do filtro protótipo.
  • Em seguida obter os polos do filtro:
, onde
  • 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.
%% Projeto de filtro passa-baixas usando funções do Matlab  
%% Especificações do filtro 
Wp =16000; Ws = 20000; Ap = 0.3; As = 20; G0= 3;
% Para analisar o filtro projetado, use fvtool(b,a) para observar plano s, resposta em magnitude, fase e atraso de grupo
 
%% Butterworth
[n,Wn] = buttord(Wp, Ws, Ap, As,'s')
[b,a] = butter(n,Wn, 's');

%% Chebyshev I
n = cheb1ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby1(n,Ap, Wp, 's');

%% Chebyshev II
n = cheb2ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby2(n,As, Ws, 's');

%% Elliptic - Cauer
[n, Wn] = ellipord(Wp, Ws, Ap, As,'s')
[b,a] = ellip(n,Ap,As, Wn, 's');
  • Ver pag. 204 a 208 de [2]
Aula 12 (27 mar)
  • Filtros Analógicos:
  • Transformações de frequência de filtros analógicos
  • passa-baixas () -> passa-baixas ()
  • Substituição de variáveis
  • Cálculo do protótipo com
  • passa-baixas () -> passa-altas ()
  • Substituição de variáveis
  • Cálculo do protótipo com
  • passa-baixas () -> passa-faixa ( e )
  • Substituição de variáveis
  • Cálculo do protótipo com
onde e
  • passa-baixas () -> rejeita-faixa ( e )
  • Substituição de variáveis
  • Cálculo do protótipo com
onde e
  • Ver pag. 208 a 218 de [2]
Aula 13 (03 abr)
  • Exemplos de Filtros Analógicos:
  • Exemplo 1: Filtro passa-baixas ( = 941Hz, = 1209 Hz, = 1 dB, = 20 dB)
  • Exemplo 2: Filtro passa-altas ( = 1209 Hz, = 941Hz, = 1 dB, = 20 dB)
  • Exemplo 3: Filtro passa-faixa ( = 811 Hz, = 895,5 Hz = 770 Hz, = 941 Hz, = 1 dB, = 30 dB)
NOTA:
  • No calculo do filtro lembre-se de usar as frequências angulares para , , , .
  • onde () é a frequência de passagem em Hz (rad/s), () é a frequência de rejeição em Hz (rad/s), () é a frequência central em Hz (rad/s), () é a largura de banda em Hz (rad/s).
  • Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos.
Aula 13 e 14 (06 e 10 abr)
  • 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 (fa/2)
  • Obter o valor desse angulo predistorcido para compensar a distorção na frequencia causada pela transformação bilinear.
Aula 15 e 15 (10 e 13 abr)
  • Filtros Digitais: Filtros IIR: Uso do Matlab.
O projeto dos filtros digitais IIR baseados na transformada bilinear no Matlab é realizada em dois passos: (1) Determinação da ordem do filtro; (2) Determinação dos coeficientes do numerador e denominador de .
Unidade 3

Unidade 3

Aula 17 (17 abr)
  • 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 18 (20 abr)
  • Coeficientes da série de Fourier de filtros ideias: LP, HP, BP, BS
  • Passa-baixas (Low-pass)
  • Passa-altas (High-pass)
  • Passa-faixa (Band-pass)
  • Rejeita-banda (Band-stop)
  • Janela retangular, fenômeno de Gibbs
Aula 19-20 (24-27 abr)
  • Uso de funções de janelamento temporal no projeto de filtros digitais.
  • Tipos de janelas temporais usadas no projeto de filtros digitais.
  • Retangular
  • Bartlett
  • Hanning
  • Hamming
  • Blackman
  • em todas as janelas quando
onde é para par e para impar
L = 64; 
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
Tabela 5.1
Janela
Retangular 13.3 20.33 0.92/M
Triangular 26.6 27.41
Bartlett 26.5 27.48
Hann 31.5 44.03 3.11/M
Bartlett-Hanning 35.9 40.77
Hamming 42.5 54.08 3.32/M
Bohman 46.0 51.84 7.01/M
Parzen 53.1 56.89
Backman 58.1 75.25 5.56/M
Flat Top 88.0 106.3
Backman-Harris 92.1 108.8
Nutfall 93.8 109.7
  • Dados acima obtidos para um filtro passa baixas de ordem N = 64 com
  • Ver pag. 256 a 265 de [2]
  • Ver artigos:
Aula 21 (4 mai)
  • Filtros Digitais: Filtros FIR:
  • 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.
Aula 22 e 23 (8 e 11 mai)
  • Filtros Digitais: Filtros FIR
  • Projeto de filtro FIR utilizando janelas temporais ajustáveis
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.

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)
  • Ver as funções fir1, kaiserord do Matlab.
  • Ver pag. 266 a 273 de [2]
  • Uso das funções window e fir1 do Matlab para projeto de filtro FIR

%% 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 24 (15 mai)
  • Filtros Digitais: Filtros FIR
  • Uso do [2] Fdatool para projeto de filtro IIR, FIR equiripple e FIR com janela.
%% Exemplo de Filtro 
fp = 3000 Hz;
fr = 4000 Hz;
fs = 20000 Hz;
Ap = 1 dB;
Ar = 40 dB;
Unidade 4

Unidade 4

Aula 25 (18 Mai)
  • Realização de Filtros
  • Realização de filtros FIR: Forma Direta.
FIR FD MathWorks.png
Figura 1 - Realização de filtros FIR na Forma Direta
  • 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.
FIR FDT MathWorks.png
Figura 2 - Realização de filtros FIR na Forma Transposta
FIR FDT2 MathWorks.png
Figura 3 - Realização de filtros FIR na Forma Transposta
  • Realização de filtros FIR de fase linear: simétrico tipo I e II e antissimétrico tipo III e IV.
FIR Sym2 MathWorks.png
Figura 4 - Realização de filtros FIR de fase linear Simétrico I
FIR Sym1 MathWorks.png
Figura 5 - Realização de filtros FIR de fase linear Simétrico II
FIR AntiSym3 MathWorks.png
Figura 6 - Realização de filtros FIR de fase linear Antisimétrico III
FIR AntiSym4 MathWorks.png
Figura 7 - Realização de filtros FIR de fase linear Antisimétrico IV
Aula 26 (22 Mai)
  • Realização de Filtros usando o comando realizemdl do 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');
  • Realização de filtros IIR de 2ª ordem: Forma Direta I e II, e Forma Transposta I e II.
  • Separando H(z) em dois blocos , e obtendo o sinal intermediário W(z) ou Y(z) dependendo da ordem dos blocos.
H1 H2 MathWorks.png
Figura 7 - Separação do filtro IIR H(z) em H1(z) e H2(z)
Com o ordenamento dos blocos e em ordem direta teremos a Forma Direta I:
Podemos obter a realização de na forma direta.
Para obter a realização de , é necessário reescrever a saída em função de e das saídas anteriores e :
IIR FD1 MathWorks.png
Figura 8 - Realização de filtros IIR na Forma Direta I
Com o ordenamento dos blocos e em ordem reversa teremos a Forma Direta II:
IIR FD2a MathWorks.png
Figura 9 - Realização de filtros IIR na Forma Direta II
Considerando que os sinais no centro são idênticos podemos simplificar e obter a Forma Direta II (Canônica):
IIR FD2b MathWorks.png
Figura 10 - Realização de filtros IIR na Forma Direta II Canônica
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.
IIR FT1 MathWorks.png
Figura 11 - Realização de filtros IIR na Forma Transposta I
IIR FT2 MathWorks.png
Figura 12 - Realização de filtros IIR na Forma Transposta II
  • 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.
  • Filtros Digitais: Ferramentas do Matlab para projeto
Aula 27 e 28 (25 e 29 mai)
As aulas foram suspensas pela direção do campus em funções da GREVE DOS CAMINHONEIROS
Aula 29 (05 jun)
  • Filtros Digitais: Quantização
Ver Use Filter Designer with DSP System Toolbox Software
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)
  • Utilizando o filtro projetado na AE2 e AE3, 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.
Aula 30 (08 jun)
  • Uso do Simulink
Aula 31 (12 jun)

Para configurar o Simulink para sistemas discretos execute o comando dspstartup.m antes de abrir um novo modelo.

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

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
Atividades Relâmpago (prazo e forma de entrega ver na plataforma AVA)


AE1 - Projeto de Filtros Digitais IIR (Entrega e prazos ver Moodle)

Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais IIR: (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". Nesta avaliação é solicitado que cada equipe realize o projeto de 4 filtros, e trabalhos individuais serão 3 filtros. Para todos os filtros considere como valores default fa = 8 kHz, Gp = 0 dB, Ap = 0.5 dB e As = 30 dB (exceto se indica outro valor na tabela abaixo. Os filtro BP deverão ter apenas o BP1 projetado conforme o procedimento completo, sendo que nos demais deverá ser aproveitado o filtro H(p) para obtê-los.

Equipe Filtro 1 Filtro 2 Filtro 3 Filtro 4
Equipe 1 LP - (f1 = 950 Hz; f2 = 1300 Hz, As = 30 dB, Butterworth) HP - (f1 = 950 Hz; f2 = 1300 Hz, As = 30 dB, Chebychev 1) BP1 - (f1 = 627 Hz; f2 = 683 Hz, f3 = 711 Hz; f4 = 767 Hz, Elíptico ) BS1 - (f1 = 1202 Hz; f2 = 1309 Hz, f3 = 1363 Hz; f4 = 1470 Hz, Elíptico )
Equipe 2 LP - (f1 = 950 Hz; f2 = 1300 Hz, As = 25 dB, Chebychev 1) HP - (f1 = 950 Hz; f2 = 1300 Hz,, As = 25 dB, Butterworth) BP1 - (f1 = 847 Hz; f2 = 922 Hz, f3 = 960 Hz; f4 = 1035 Hz, Chebychev 2 ) BS1 - (f1 = 1329 Hz; f2 = 1447Hz, f3 = 1507 Hz; f4 = 1625 Hz, Chebychev 2 )
Equipe 3 LP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 30 dB, Chebychev 1) HP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 20 dB, Butterworth) BS1- (f1 = 767 Hz; f2 = 835 Hz, f3 = 869 Hz; f4 = 937 Hz, Elíptico ) BP1 - (f1 = 693 Hz; f2 = 755 Hz, f3 = 785 Hz; f4 = 847 Hz, Elíptico )
Equipe 4 LP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 25 dB, Butterworth) HP - (f1 = 1050 Hz; f2 = 1400 Hz, As = 35 dB, Chebychev 1) BP1 - (f1 = 1088 Hz; f2 = 1185 Hz, f3 = 1233 Hz; f4 = 1330 Hz, Chebychev 2 ) BS1 - (f1 = 1329 Hz; f2 = 1447Hz, f3 = 1507 Hz; f4 = 1625 Hz, Chebychev 2 )
Equipe 5 LP - (f1 = 850 Hz; f2 = 1200 Hz, As = 35 dB, Chebychev 1) HP - (f1 = 850 Hz; f2 = 1200 Hz, As = 25 dB, Butterworth) BP1 - (f1 = 693 Hz; f2 = 755 Hz, f3 = 785 Hz; f4 = 847 Hz, Elíptico ) BS1 - (f1 = 1202 Hz; f2 = 1309 Hz, f3 = 1363 Hz; f4 = 1470 Hz, Elíptico )
onde:
LP (Low Pass)- Passa Baixa, HP (High Pass)- Passa Altas, BP (Band Pass)- Passa Faixa, BS (Band Stop)- Rejeita Faixa
- são as "N" frequência de especificação do filtro dadas em Hertz (kHz ou MHz); f_a é a frequência de amostragem dos sinais e do sistema.
- frequência de passagem; - frequência de rejeição, - Atenuação máxima na banda de passagem (dB), - Atenuação mínima na banda de rejeição (dB), - Ganho médio na banda de passagem (dB).
  • Os filtros LP e HP devem ser realizados utilizando a aproximação de Butterworth ou Chebyshev tipo 1 (devendo ser todos os calculados efetuados a partir das equações), enquanto os filtros BP e BS devem ser realizados utilizando a aproximação de Chebyshev tipo 2 ou Euler (podendo ser calculada a função H(p) a partir das funções do Matlab.
  • A tabela acima indica o tipo de filtro que cada equipe deve utilizar.
  • Para ambos filtros deve indicada a ordem do filtro, o valor de polos e zeros, e as equações de H(p), H(s), H(z).
  • Deve ser apresentado de forma gráfica a resposta em frequência dos filtros (ganho em dB e fase) dos filtros (a) protótipo H(p), (b) Filtro analógico H(s) e Filtro digital H(z). Para mostrar que os filtros atendem a especificação utilize uma mascara com as especificações.
  • No caso do filtro H(z) também deve ser mostrado o atraso de grupo (ver função grpdelay do Matlab)
  • Apresente o diagrama dos pólos e zeros dos filtros H(p), H(s) e H(z)
  • Utilize a mesma escala em dB para os 3 gráficos de cada filtro. Nas abcissas utilize uma escala em Hz (kHz ou MHz). Utilize uma mascara com cor diferenciada para indicar claramente a especificação do filtro, e crie um segundo gráfico mostrando claramente a banda de passagem conforme ilustrado nas figuras abaixo:

Resposta em frequência - Ganho em dB Detalhe da banda de passagem da resposta em frequência - Ganho em dB

  • 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.
AE2 - Projeto de Filtros Digitais FIR (Entrega e prazos ver Moodle)

Esta avaliação visa verificar se você conhece a metodologia de projeto de filtros digitais FIR: (a) Projeto de filtros com Janela fixas e ajustáveis; (b) Projeto de filtros com o algoritmo de Parks-McCleallan; Nesta avaliação é solicitado que cada equipe realize os mesmos filtros projeto de filtros da atividade AE1 (somente os filtros 1 a 3).

  • O filtro LP deve ser realizado utilizando uma janela fixa calculando os valores dos coeficientes da série de Fourier, os valores do vetor da janela podem ser obtidos usando as funções do Matlab. .
  • O filtro HP deve ser realizado utilizando uma janela ajustável de Kaiser, podendo ser utilizado diretamente funções do Matlab que calculam a janela.
  • O filtro BP deve ser projetado usando o algoritmo de Parks-McCleallan.
  • Procure obter em cada caso a menor ordem que possibilite ter uma resposta de frequência que atende a sua especificação.
  • Para todos filtros deve indicada a ordem do filtro.
  • Deve ser apresentado de forma gráfica a resposta em frequência dos filtros (ganho em dB e fase) dos filtros digitais H(z).
  • Deve ser apresentado o diagrama dos pólos e zeros do filtro H(z)
  • Utilize a mesma escala em dB para os filtros. Nas abcissas utilize uma escala em Hz (kHz ou MHz). Utilize uma mascara com cor diferenciada para indicar claramente a especificação do filtro, e crie um segundo gráfico mostrando claramente a banda de passagem conforme ilustrado nas figuras da atividade AE1.
  • 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. Note este relatório é simplificado, mas é necessário uma análise textual dos resultados.
  • Envie o relatório em pdf e os arquivos ".m" utilizados na plataforma Moodle.
AE3 - Projeto de um Detector de DTMF (Entrega e prazos ver Moodle)
  • Projeto de um receptor DTMF.
  • cada equipe deverá projetar os discriminadores de frequências correspondente a duas linhas e três colunas (ou três linhas e duas colunas) do sistema DTMF.
Equipe Linhas Colunas Teclas Fator (N)
Equipe 1 L1, L3, L4 C1, C3 7, 9, 1, 3, # 8
Equipe 2 L1, L2, L4 C2, C3 5, 6, 0, #, 3 11
Equipe 3 L1, L3, L4 C1, C2 1, 2, 7, 8, 0 12
Equipe 4 L1, L2 C1, C2, C3 4, 6, 5, 2, 3 13
Equipe 5 L1, L2, L3 C1, C2 8, 7, 4, 1, 5 10
  • 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. 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:
DiscriminadorDTMF.png

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: — 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 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: 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,shallbe: - 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 devem ser do tipo IIR enquanto que os filtro das colunas devem ser do tipo FIR. O Filtro do detector de envoltório deve ser 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:
  • 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 é equivalente a uma frequência de corte de
  • 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 a metodologia utilizada devem estar documentados.
  • Envie o relatório em pdf e os arquivos ".m" utilizados na plataforma Moodle.
  • Ver as especificações DTMF em:
  • Outros links auxiliares:

Referências Bibliográficas

  1. 1,0 1,1 1,2 DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235
  2. 2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822
  3. LATHI, Bhagwandas P. Sinais e Sistemas Lineares. 2. ed. Porto Alegre: Artmed-Bookman, 2007. 856 p. ISBN 978-8560031139


Curso de Engenharia de Telecomunicações