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

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Registro on-line das aulas

Unidade 1

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

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

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

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

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

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

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

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

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

plot(f,P1, 'r') 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Execute no Matlab o código abaixo, e analise os 3 filtros implementados através dos seus zeros e polos. Busque tirar conclusões sobre a influência da posição dos polos e zeros (ver o gráfico do plano z) e correlacione com a resposta de frequência em magnitude (gráfico do freqz).

Variação do Experimento 2.3
%% Experimento 2.3 - Filtros Digitais
% Exemplos e Experimentos baseados no livro:
% DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235.
% FILE: Exp2_3.m
 
%% 1º filtro
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 ]'; P = [p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
 
%% 2º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p1 p1' p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
 
%% 3º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.99*exp(1j*pi/4);
p2 = 0.9*exp(1j*pi/4 - 1j*pi/30);
p3 = 0.9*exp(1j*pi/4 + 1j*pi/30);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p2 p2' p3 p3']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);

Unidade 2

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

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

  • No entanto, antes de projetar filtros, vejamos a análise básica de filtros analógicos utilizando o Matlab.
Dado um sistema linear invariante no tempo, representado pela função de transferência , obter a resposta de frequência do sistema (Magnitude e Fase).
%%Definição do filtro

% Definindo os coeficientes do filtro
b = [1 1];       % Numerador 
a = [1 1 5];     % Denominador

% Calculando os zeros (raízes do numerador) e pólos (raízes do denominador)
% Método 1 - usando a função tf2zp
[z1,p1,k]=tf2zp(b,a) 
% Método 2 - obtendo as raízes
z2 = roots(b);
p2 = roots(a);
zplane(b,a);

%% Obtendo a resposta em frequência 
% substitituindo a variável complexa s por jw usando a função freqz
freqs(b,a);

% Usando cálculo simbólico e plotando o gráfico com semilogx
syms s  w
H(s) = (s+1)/(s^2 + s + 5);
pretty(H(1j*w))
latex(H(1j*w))
%%
ws = logspace(-2, 1, 1000);
h = H(1j*ws);
subplot(211)
plot(ws,abs(h)); grid on;
%semilogx(ws,abs(h)); grid on;
subplot(212)
plot(ws,angle(h)/pi*180); grid on;
%semilogx(ws,angle(h)/pi*180); grid on;
  • Para aproximação de magnitude de filtros analógicos o projeto pode usar as aproximações de Butterworth, Chebyshev (tipo 1 ou 2) ou Cauer, mostradas na figura abaixo.

TiposFiltrosHs.png

Projeto de filtros analógicos do tipo Butterworth

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

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

INÌCIO DAS AULAS REMOTAS

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

MascaraFiltroLP.png

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

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

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


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

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

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

Para o projeto dos filtros do tipo Chebyshev, são utilizados os polinômios de Chebyshev de primeira ordem, os quais são definidos pela equação trigonométrica:

Os dois primeiros polinômios são facilmente calculados como:

O cálculo dos demais termos pode ser feita pela relação recursiva:

Portanto o polinômio de grau 2 pode ser obtido por

Assim os primeiros nove polinômios de Chebyshev de primeira ordem podem ser obtidos:

Esses polinômios mostram um comportamento oscilatório entre .

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

FONTE: Polinômios de Tchebychev, Wikipedia

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



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


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

Para o projeto de filtros analógicos é necessário fazer as transformações de frequência indicadas abaixo, as quais devem ser consideradas no momento da determinação dos parâmetros do filtro protótipo LP.

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

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

  • Dados de , passa-altas (highpass-HP)
  • Especificações de , passa-baixas (lowpass-LP) protótipo
  • Determinação de
  • Determinação de HP substituindo e corrigindo o ganho em
  • Obtida a função de transferência obtenha a resposta em frequência, substituindo
  • Obtenha a resposta em frequência, para
  • Plote o gráfico de e , indicando a máscara de especificação do filtro.
Aula 15 (13 abr)
  • [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s') Encontra a menor ordem n é a frequência de corte Wn para um filtro Butterworth analógico, com ripple na banda passante (bandpass) menor que Rp dB e atenuação na banda de rejeição (stopband) pelo menos de Rs dB. As frequências angulares Wp e Ws são dadas em rad/s. Se Wp e Ws são escalares, o filtro será um LP ou HP. Se Wp e Ws forem vetores, o filtro será um BP ou BS.
  • [b,a] = butter(n,Wn,ftype,'s') Projeta o filtro Butterworth analógico LP, HP, BP ou BS com frequência angular de corte Wn, dependendo do valor de ftype e do número de elementos de Wn.
%% Projeto de filtro passa-alta (HP) usando funções do Matlab 
Wp = 150;        % rad/s
Ws = 40;         % rad/s
Rp = 3;          % dB
Rs = 60;         % dB
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')
[b,a] = butter(n,Wn,'high','s');
[h,w] = freqs(b,a,logspace(1,3,1000));
semilogx(w,20*log10(abs(h)));grid on;
hold on; plot([Wp Wn Ws],[-Rp -3 -Rs],'x'); hold off;
title(sprintf('Filtro HP Butterworth, n = %d',n))

%% Projeto de filtro passa-faixa (BP) usando funções do Matlab 
Wp = [100 200];  % rad/s
Ws = [50 250];   % rad/s
Rp = 3;          % dB
Rs = 40;         % dB
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s');
[b,a] = butter(n,Wn,'s');
freqs(b,a,logspace(1,3,1000))
title(sprintf('Filtro BP Butterworth, n = %d',n))
  • [n,Wp] = cheb1ord(Wp,Ws,Rp,Rs,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type I filter with cutoff angular frequencies Wp.
  • [b,a] = cheby1(n,Rp,Wp,ftype,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type I filter with passband edge angular frequency Wp and Rp decibels of passband ripple.
  • [n,Ws] = cheb2ord(Wp,Ws,Rp,Rs,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type II filter with cutoff angular frequencies Ws.
  • [b,a] = cheby2(n,Rs,Ws,ftype,'s') designs a lowpass, highpass, bandpass, or bandstop analog Chebyshev Type II filter with stopband edge angular frequency Ws and Rs decibels of stopband attenuation.
  • [n,Wn] = ellipord(Wp,Ws,Rp,Rs,'s') finds the minimum order n and cutoff frequencies Wn for an analog elliptic filter. Specify the frequencies Wp and Ws in radians per second. The passband or the stopband can be infinite.
  • [b,a] = ellip(n,Rp,Rs,Wp,ftype, 's') designs a lowpass, highpass, bandpass, or bandstop analog elliptic filter with passband edge angular frequency Wp, Rp decibels of passband ripple, and Rs decibels of stopband attenuation.
  • Note: The resulting bandpass and bandstop designs are of order 2n.
  • Note: See Limitations [1] for information about numerical issues that affect forming the transfer function.
  • Projeto de filtros analógicos do tipo Butterworth, Chebyshev I e II e Cauer (eliptico) usando funções do Matlab.
%% Projeto de filtro passa-baixas usando funções do Matlab  
%% Especificações do filtro 
Wp =16000; Ws = 20000; Ap = 0.3; As = 20; G0= 3;
% Para analisar o filtro projetado, use fvtool(b,a) para observar plano s, resposta em magnitude, fase e atraso de grupo

%% Butterworth
[n,Wn] = buttord(Wp, Ws, Ap, As,'s')
[b,a] = butter(n,Wn, 's');

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

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

%% Elliptic - Cauer
[n, Wn] = ellipord(Wp, Ws, Ap, As,'s')
[b,a] = ellip(n,Ap,As, Wn, 's');
  • Ver pag. 204 a 208 de [2]
Aula 16 (16 abr)
  • Exemplos de Filtros Analógicos:
  • Exemplo 1: Filtro passa-baixas ( = 941Hz, = 1209 Hz, = 1 dB, = 20 dB)
  • Exemplo 2: Filtro passa-altas ( = 1209 Hz, = 941Hz, = 1 dB, = 20 dB)
  • Exemplo 3: Filtro passa-faixa ( = 770 Hz, = 811 Hz, = 895,5 Hz, = 1209 Hz, = 1 dB, = 30 dB, = 5 dB).
  • Exemplo 4: Filtro rejeita-faixa ( = 53 Hz, = 58 Hz, = 62 Hz = 67 Hz, = 2 dB, = 25 dB)
NOTA:
  • No calculo do filtro lembre-se de usar as frequências angulares para , , , .
  • onde () é a frequência de passagem em Hz (rad/s), () é a frequência de rejeição em Hz (rad/s), () é a frequência central em Hz (rad/s), () é a largura de banda em Hz (rad/s).
  • Confira os projetos dos filtros plotando as respostas em frequência dos filtros protótipo H(p) e filtro final H(s) de cada um dos exemplos.
Aula 17 e 18 (23 e 28 abr)
  • Filtros Digitais: Filtros IIR: transformações do tempo contínuo no tempo discreto
  • Obter a especificação do filtro em angulo entre 0 e 1, onde 1 corresponde a metade da frequência de amostragem , ou também o angulo
  • Obter o valor desse angulo predistorcido para compensar a distorção na frequência causada pela transformação bilinear , onde
  • passa-baixas () -> passa-baixas ()
  • Substituição de variáveis
  • Cálculo do protótipo com
  • passa-baixas () -> passa-altas ()
  • Substituição de variáveis
  • Cálculo do protótipo com
  • passa-baixas () -> passa-faixa ( e )
  • Substituição de variáveis
  • Cálculo do protótipo com
onde e
  • passa-baixas () -> rejeita-faixa ( e )
  • Substituição de variáveis
  • Cálculo do protótipo com
onde e
  • Realizar os projetos dos exemplos anteriores, considerando uma frequência de amostragem de 8 kHz.
  • Ver pag. 219 a 229 de [2]
  • Ver pag. 403 a 415 e 434 a 435 de [1]
  • Ver também a ferramenta fvtool, que facilita a análise dos filtros digitais.
Exemplo filtro digital BP IIR - transformação bilinear

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

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


Aula 19 (30 abr)
O projeto dos filtros digitais IIR baseados na transformada bilinear no Matlab é realizada em dois passos: (1) Determinação da ordem do filtro; (2) Determinação dos coeficientes do numerador e denominador de .
fa = 200;
fN = fa/2;
wo = 60/fN;  bw = 10/fN;
[b,a] = iirnotch(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000;
fN = fa/2;
wo = 941/fN;  bw = 100/fN;
[b,a] = iirpeak(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000; fN = fa/2;
fo = 1000;  bw = 20/fN;
[b,a] = iircomb(fa/fo,bw,'peak');  % ou use a flag 'notch'
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
Dias 4, 7, 11 e 14 mai
  • Parada Pedagógica sem aulas de acordo com a resolução do colegiado do campus de São José.
Dia 18 mai
  • Retorno às ANPs, porém sem aula de acordo com mensagem recebida do chefe do DEPE.
  • Foi solicitado que todos alunos se cadastram no workspace da disciplina no SLACK.
  • Foi solicitado que todos alunos respondam a uma sondagem sobre as ANPs Volta às aulas não presenciais em tempo de pandemia.
  • Resultado das outras enquetes:
Você gostaria que a UC de PSD29007 tivesse continuidade através de ANPs durante a pandemia do corona virus?
sim
█████████████████████████ | 100% (11)
não
A que horas começar as aulas?
7:30
████████ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 33% (3)
7:45
██████████████ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 56% (5)
8:00
██ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 11% (1)
8:15
⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ ⁢ | 0% (0)

Unidade 3

Unidade 3 - Filtros FIR
Aula 20 (21 mai)
Filtros digitais: Filtros FIR
  • A função de transferência de transferência de um filtro digital FIR


  • O filtro FIR causal de ordem n mostrado acima pode ser descrito também através da equação de diferenças:
  • Pode-se notar que a saída do filtro FIR é uma soma ponderada dos N valores mais recentes das entradas
  • A realização desse filtro pode ser feita através de algoritmos de software ou circuitos digitais usando por exemplo a estrutura:
FIR Filter.svg

A determinação da resposta ao impulso do filtro pode ser feita substituindo a entrada por . O resultado é , e portanto a resposta ao impulso tem duração igual ao número de coeficientes N+1 (onde N é a ordem do filtro). Esse é o motivo pelo qual o filtro tem o nome de filtro de resposta ao impulso finita (FIR - Finite Impulse Response). O filtro também recebe nomes como filtro transversal, Filtro não recursivo, filtro de média móvel, e tapped delay filter (torneira com atrasos?).

A função de transferência também pode ser descrita como:

Algumas vantagens que os filtros FIR tem sobre os IIR: 1. É possível projetar FIR com fase linear, ou seja atraso de grupo constante. Esses filtros são desejáveis na transmissão de sinais digitais.

O atraso de grupo é definido como as , onde é a resposta de fase do filtro.

2. As amostras da resposta ao impulso são os coeficientes do filtros , e portanto não precisam ser calculadas.

3. Os FIR são sempre estáveis pois tem todos os polos na origem. Também é consequência de não ter realimentação. Por isso também não tem ciclo limite que surge nos filtros IIR como resultado da resposta ao impulso de duração infinita associada a representação dos coeficientes e dos sinais com palavras de comprimento finito de bits.

4. O efeito da representação dos coeficientes e dos sinais com palavras de comprimento finito de bits, na resposta de frequência e resposta no domínio do tempo é menor que nos IIR.


Os filtro FIR podem ter fase linear ou não ter fase linear.

  • Filtros de fase linear: simétricos e antissimétricos (Tipo 1, 2, 3 e 4)
  • Filtros de fase não linear: são todos que não se enquadram em um dos 4 tipos acima.

Os filtros de fase linear possuem algumas propriedades (respostas em frequência possíveis, distribuição dos zeros em simetria quadrantal), conforme é mostrado a seguir.

  • Inicialmente observe em exemplos as propriedades dos FIR tipo 1, 2, 3 e 4. Observe a resposta de frequência, fase, atraso de grupo, coeficientes e a simetria dos zeros em relação ao circulo unitário no diagrama de polos e zeros dos filtros abaixo.
N = 10;
bi = 2*(rand(1,N)-0.5)
%% Tipo I - LP, HP, BS, BP
b = [bi (2*rand(1,1)-0.5) flip(bi)];
fvtool(b,1);
%% Tipo II - LP, BP
% tem um zero em -1 
b = [bi  flip(bi)];
fvtool(b,1);

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

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

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

Aula 21 (28 mai)
Filtros digitais: Filtros FIR

FIR tipo I

Considere o exemplo de um filtro simétrico de ordem par (N=6)

Se ele apresenta simetria dos coeficientes , e , temos que:

Para obter a resposta em frequência , substituímos .

Aplicando a identidade , obtemos que:

Portanto a resposta em frequência tem um resposta de magnitude com uma parte real , e uma fase linear igual a , e portanto o atraso de grupo é , que é a metade da ordem N do filtro. Pode-se generalizar este resultado para qualquer filtro simétrico de ordem par:

Na qual se percebe que a fase linear é igual a , e portanto o atraso de grupo é , metade da ordem N do filtro.

FIR tipo II

Considere o exemplo de um filtro simétrico de ordem impar (N=5)

Se ele apresenta simetria dos coeficientes , e , temos que:

Para obter a resposta em frequência:

Aplicando a identidade , obtemos que:

Portanto a resposta em frequência tem um resposta de magnitude com uma parte real , e uma fase linear igual a , e portanto o atraso de grupo é , que é a metade da ordem N do filtro. Pode-se generalizar este resultado para qualquer filtro simétrico de ordem impar:

Na qual se percebe que a fase linear é igual a , e portanto o atraso de grupo é , metade da ordem N do filtro.

FIR tipo III

Considere o exemplo de um filtro antissimétrico de ordem par (N=6)

Se ele apresenta simetria dos coeficientes , , e , temos que:

Para obter a resposta em frequência , substituímos .

Aplicando a identidade , e que obtemos que:

Portanto a resposta em frequência tem um resposta de magnitude com uma parte real , e uma fase linear igual a , e portanto o atraso de grupo é , que é a metade da ordem N do filtro. Pode-se generalizar este resultado para qualquer filtro antissimétrico de ordem par:

Na qual se percebe que a fase linear é igual a , e portanto o atraso de grupo é , metade da ordem N do filtro.

FIR tipo IV

Considere o exemplo de um filtro antissimétrico de ordem impar (N=5)

Se ele apresenta simetria dos coeficientes , e , temos que:

Para obter a resposta em frequência:

E portanto

Portanto a resposta em frequência tem um resposta de magnitude com uma parte real , e uma fase linear igual a , e portanto o atraso de grupo é , que é a metade da ordem N do filtro. Pode-se generalizar este resultado para qualquer filtro antissimétrico de ordem impar:

Na qual se percebe que a fase linear é igual a , e portanto o atraso de grupo é , metade da ordem N do filtro.

Propriedades dos filtros FIR de fase linear

Como mostrado acima, os filtros que exibem simetria ou antissimetria em seus coeficientes (ou resposta ao impulso), apresentam fase linear (ou atraso de grupo constante). Também foi mostrado que o atraso de grupo é igual a N/2 onde N é a ordem do filtro. Foi demonstrado por Rabiner *** que apenas esses quatro tipos de filtro FIR possuem essa característica, portanto pode-se afirma que "Se e somente se o filtro FIR possui coeficientes simétrico ou antisimétricos ele possui fase linear".

Em relação a posição dos zeros, é possível verificar que cada zero sobre o circulo unitário produz uma resposta de magnitude nula na frequencia angular correspondente e um salto de fase de .

N = 5;
bi = 2*(rand(1,N)-0.5)
b = [bi (2*rand(1,1)-0.5) flip(bi)];
[h,w] = freqz(b,1,'whole');
figure(1);
subplot(421);
plot(w/pi,20*log10(abs(h))); grid on;
xlabel('\omega / \pi'); ylabel ('magnitude - dB');
subplot(423);
plot(w/pi,angle(h)/pi); grid on;
xlabel('\omega / \pi'); ylabel ('fase - rad / \pi');
subplot(425);
plot(w/pi,unwrap(angle(h))/pi); grid on;
xlabel('\omega / \pi'); ylabel ('fase - rad / \pi');
subplot(427); grpdelay(b,1);
xlabel('\omega / \pi'); ylabel ('atraso de grupo - amostras');
subplot(4,2,[2,4,6,8]); zplane(b,1);
xlabel('real'); ylabel ('imaginario');
Aula 22 (1 jun)

Também devido a existência (ou não) de zeros em e , que corresponde a frequência de Nyquist , mostramos que a resposta de magnitude nessas frequencias é nula (ou não). Assim os tipos 1, 2, 3 e 4 de filtros FIR resultam em:

  • Tipo 1: permite projetar filtros LP, HP, BP e BS.
  • Tipo 2: (tem um zero em -1) permite projetar filtros LP e BP.
  • Tipo 3: (tem um zero em 1 e -1) permite projetar filtros BP.
  • Tipo 4: (tem um zero em 1) permite projetar filtros HP e BP.

Essa característica é importante conhecer antecipadamente pois implicará no número de coeficientes e na escolha do tipo de (anti)simetria. Por exemplo para filtro BS apenas o Tipo 1 pode ser usado.

Outra propriedade a ser destacada é em relação aos zeros do filtro. Em primeiro vamos analisar a consequencia da simetria nos coeficientes :

fazendo na segunda equação N-n = m, temos que os limites n = 0 -> m = N, e n = N -> m = 0.

Com a mesma análise para antissimetria nos coeficientes :

Nessas duas equações é possível perceber que se é um zero então também será um zero de . No caso de zeros reais, se temos um zero então também é um zero, exceto se ou . Por outro lado, se todos os coeficientes b(n) do filtro são reais, então os zeros complexos, aparecem em pares complexos conjugados e , e seus reciprocos e também são zeros de . Esse tipo de disposição dos zeros denominamos de simetria quadrantal.

QuadrantalSymmetry.png
Figura 2 - Simetria quadrantal de filtros FIR de fase linear

FONTE:

  • pag. 251 a 261 de [2]
  • firtype - Type of linear phase FIR filter - Mathwork

Projeto de filtros FIR pelo método da série de Fourier

Usando a representação dos filtros ideais LP, HP, BP, BS, com frequências de corte e ganho unitário na banda de passagem e ganho zero na banda de rejeição, e considerando que a magnitude das respostas em frequência é uma função periódica em , e conhecendo as equações de síntese e análise de um sinal (ou sistema)

onde

É possível coeficientes da série de Fourier de filtros ideais: LP, HP, BP, BS

MagnitudeResponseIdealFilter.png
Figura 3 - Magnitude da resposta em frequência de filtros

Passa-baixas (Low-pass)

LPLinearPhaseFilter.png
Figura 4 - Resposta em frequência de filtros LP de fase linear

De modo semelhante é possível obter os coeficientes dos filtros HP, BP e BS.

Passa-altas (High-pass)
Passa-faixa (Band-pass)
Rejeita-banda (Band-stop)

onde sabe-se que , ou seja para e para .

  • Ver pag. 249 a 256 de [2]


Aula 23 (4 jun)
  • O uso da janela retangular no "janelamento" dos coeficientes da série de Fourier, resulta no fenômeno de Gibbs na magnitude da resposta em frequência, conforme mostrado a seguir.

Aplicando a equação de síntese da série obtemos:

Note que esta função tem um máximo em , e cruza o zero em , portanto a lagura do lóbulo central é de . Além disso percebe-se que se aumentamos o tamanho da janela retangular (2M+1), a largura do lóbulo central é reduzida proporcionalmente.

FuntionPsi.png
Figura 5 - função

Ao fazer o "janelamento" dos coeficientes da série de Fourier da resposta em frequência do filtro ideal, estamos multiplicando a série de coeficientes pelo janela retangular , conforme mostra a figura a seguir.

JanelaTemporalCLP.png
Figura 6 - Janelamento temporal (rectwin) dos coeficientes

Essa multiplicação no domínio do tempo corresponde a uma convolução no domínio da frequência.

A qual é mostrada graficamente na figura a seguir.

ConvoluçãoJanelaTemporalCLP.png
Figura 7 - Convolução da resposta do filtro ideal H_{LP} com a função

HwJanelaTemporalCLP.png
Figura 8 - Aproximação da resposta de magnitude com janela retangular


  • Para reduzir o ripple devido ao corte dos coeficientes, são usadas as 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


Aula 24 (8 jun)
  • em todas as janelas quando
onde é para par e para impar
ver também apodization function
L = 64; 
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));

Use o código abaixo e verifique o efeito das diferentes janelas temporais sobre a magnitude da resposta em frequência, sobre a resposta ao impulso, posição dos zeros no plano z, etc.

No código o wc é a frequência de corte do filtro LP, N é a ordem do filtro, CLP é são os coeficientes da série de Fourier do filtro LP ideal multiplicados pela janela retangular, bRET, bHAM e bBLACK são os coeficientes dos filtros usando respectivamente as janelas retangular, Hamming e Blackman.
Note que:
1) O número de coeficientes sempre será igual a (N+1)=(2M+1).
2) A função ylim([-0.1 0.1]) foi usada para destacar o ripple na banda passante.
3) O ripple na banda de rejeição é sempre proporcional ao ripple na banda passante (visualizar com a escala linear de magnitude).
4) A banda de transição aumenta a medida que o ripple diminui.
5) O aumento da ordem do filtro reduz a banda de transição, mas "quase" não afeta a amplitude do ripple.
N = 32;
wc = 0.5; M = N/2;
CLP = wc*sinc(wc*(-M:M));
bRET = CLP;
bHAM = CLP.*hamming(2*M+1)';
bBLACK = CLP.*blackman(2*M+1)';
fvtool(bRET,1,bHAM,1,bBLACK,1);
legend('rectwin', 'Hamming', 'Blackman');
ylim([-0.1 0.1])


  • Projeto de filtro FIR utilizando janelas temporais fixas.
  • Exemplos de projeto
  • Projetar um filtro LP usando uma janela temporal fixa (verificar a janela que atende a especificação)
wp = 0.2*pi; Ap = 1 dB; Gp = 0 dB
ws = 0.4*pi; As = 40 dB;
  • Para o projeto do filtro, o primeiro passo é escolher uma janela que atenda a atenuação na banda de passagem e na banda de rejeição. Em seguida é necessário determinar a ordem do filtro que atende a especificação de largura de banda de transição. Por último será necessário ajustar o valor de wc para que o filtro esteja dentro das especificações.
  • Ao final do projeto, deverá ser informado o tipo de janela escolhida, a ordem do filtro, se é do tipo 1, 2, 3 ou 4, e o valor de wc.


Aula 25 e 26 (15 e 18 jun)
  • Projetar um filtro HP usando uma janela temporal fixa (hamming, bartlett-hanning, hanning).
ws = 0.4*pi; Ap = 0.2 dB; Gp = 0 dB
wp = 0.6*pi; As = 50 dB;
  • Comparar os 3 tipos de janela, a ordem obtida, e o valor de wc em cada projeto.
  • Para o projeto dos filtros LP FIR de janela fixa, uma possível solução para reduzir o número de passos é:
  • 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 = |ws -wp|
  • PASSO 3 - Calcule os coeficientes clp do filtro LP considerando N1 e wc1 = |ws + wp|/2. Calcule os valores da janela win e obtenha a resposta ao impulso do filtro h = clp * win.
  • PASSO 4 - Verifique o valor medido de Dwm = wsm-wpm, e faça a correção da ordem do filtro em função do desvio constatado. N2 = N1*Dwm/Dw.
  • PASSO 5 - Refaça os cálculos dos coeficientes Clp do filtro ideal, da janela e da resposta ao impulso para a nova ordem N2.
  • Repita o PASSO 3 até 5, até obter um filtro com a menor ordem que atenda as especificações de Dw.
  • PASSO 6 - Desloque a frequência de corte wc de modo a ter a banda de transições posicionada corretamente entre wp e ws. wc2 = wp + (wp-wAp).
Tabela - Estimativa da atenuação do lóbulo lateral da janela, atenuação do primeiro lóbulo lateral do filtro , e largura da banda de transição , para um filtro LP FIR de janela fixa.
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
Blackman 58.1 75.25 5.56/M
Flat Top 88.0 106.3
Blackman-Harris 92.1 108.8
Nutfall 93.8 109.7
  • Dados acima obtidos para um filtro passa baixas de ordem N = 64 com
  • Ver artigos:
  • Estudo Dirigido. Projetar os filtros LP, HP e BP de acordo com as especificações dadas na Atividade AE2, considerando uma frequência de amostragem fa > que 2 * fmax especificada.


Aula 27 (22 jun)
  • 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.

A janela de Kaiser é definida por:

onde : é a função de Bessel de ordem zero [2]

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"

%% Calculo do filtro de kaiser, sem ajustes
% Especificaçao
fsamp = 8000;
fcuts = [1000 1500];
Ap = 1;
As = 40; 
ftype = 'low';

fN = fsamp/2;
wp = fcuts(1)/fN;
ws = fcuts(2)/fN;
Dw = abs(ws-wp);

% Calculo da janela de Kaiser
beta = 0.5842*(As-21)^0.4+0.07886*(As-21); 
n = ceil((As-8)/(2.285*Dw*pi)+1);
Wn = (wp+ws)/2;
wkaiser = kaiser(n+1,beta);

Forma alternativa de projeto usando a função kaiserord

fsamp = 8000;
fcuts = [1000 1500];
Ap = 1;
As = 40; 
mags = [1 0];
devs = [1-10^(-Ap/20) 10^(-As/20)];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
wkaiser = kaiser(n+1,beta);
h_fir = fir1(n,Wn,ftype,wkaiser,'noscale');

A partir das especificações do filtro é possível obter um projeto usando a função fir1. Essa função basicamente aplica o método da janela ao filtro ideal especificado pela(s) frequência(s) de corte .

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)

Como resultado do projeto a partir das equações de Kaiser é obtido o filtro abaixo:

Figura 9 - Filtro LP com janela de Kaiser, sem ajustes.

LPkaiser1.png

No entanto realizando ajustes tanto do ganho no topo , na largura da banda de transição , e na ordem do filtro , é possível reduzir essa ordem obtendo o filtro abaixo:

Figura 10 - Filtro LP com janela de Kaiser, com ajustes.

LPkaiser2.png

  • 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
Aula 28 (25 jun)
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));
Figura 11 - Filtro LP com janela de Chebyshev, Taylor e Gaussiana.

LPChebywin.png LPTaylor.png LPGauss.png


Aula 29 (29 jun)

Digital Filters with Linear Phase].

  • Exemplo do projeto de um filtro passa-baixas, com minima ordem (Filtro de Parks-McClellan) com frequência de passagem de 1000 Hz e frequência de rejeição de 1500 Hz, dada uma frequência de amostragem de 8000 Hz. Considere que a atenuação na banda de rejeição é de no mínimo 40 dB e o ripple máximo na banda passante é de 1 dB.
fa = 8000;

Ap = 1;          
Ar = 40;          
       
fp = 1000;
fr = 1500;

f = [fp fr];    
a = [1 0];        
dev = [(10^(Ap/20)-1)/(10^(Ap/20)+1)  10^(-Ar/20)]; 
[n,fo,ao,w] = firpmord(f,a,dev,fa);
b = firpm(n,fo,ao,w);
[h,w] = freqz(b,1,1024,fa);
plot(w, 20*log10(abs(h))); hold on;
plot([0 fr fr fa/2], [Ap/2 Ap/2 -Ar -Ar],':m')
plot([0 fp fp], [-Ap/2 -Ap/2 -(Ar+30)],':m');
ylim([-(Ar+30) Ap/2+10])
  • Exemplo do projeto de um filtro passa-faixa, com minima ordem (Filtro de Parks-McClellan) com frequências de passagem de 1500 e 1700 Hz e e frequências de rejeição de 1000 e 3000 Hz, dada uma frequência de amostragem de 8000 Hz. Considere que a atenuação na primeira banda de rejeição é de no mínimo 40 dB e 60 dB na segunda banda de rejeição. O ripple máximo na banda passante é de 1 dB e fa = 8000;


  • Uso do [4] para projeto de filtro IIR, FIR equiripple e FIR com janela.
  • Uso do [5] no Simulink.
  • Exemplo do projeto de um filtro passa-baixas, com minima ordem (Filtro de Parks-McClellan) com frequência de passagem de 1000 Hz e frequência de rejeição de 1500 Hz, dada uma frequência de amostragem de 8000 Hz. Considere que a atenuação na banda de rejeição é de no mínimo 40 dB e o ripple máximo na banda passante é de 0.4 dB.

Unidade 4 - Realização de Filtros

Unidade 4 - Realização de Filtros
Aula 30 (2 jul)
  • Realização de Filtros FIR
  • A função de transferência de transferência de um filtro digital FIR
  • Como
  • Conhecendo a transformada Z inversa de , e a propriedade do atraso , o filtro FIR causal de ordem mostrado acima pode ser descrito também através da equação de diferenças:
  • Pode-se notar que a saída do filtro FIR é uma soma ponderada dos N valores mais recentes das entradas
  • A realização desse filtro pode ser feita através de algoritmos de software ou circuitos digitais usando por exemplo alguma das estruturas mostradas a seguir.
  • A título de exemplo vamos considerar um filtro FIR de ordem 4, e para permitir uma notação de vetores com os índices do Matlab (maiores que 0), a função de de transferência e sua equação de diferenças são mostradas a seguir:
Realização de filtros FIR na Forma Direta

Para exemplificar as diferentes realizações utilizaremos com base um filtro de ordem 4 representado pela função de transferência

  • A implementação direta desse sistema discreto no tempo pode ser representada pelo modelo esquemático a seguir.

Figura 4.1 - Realização de filtros FIR na Forma Direta
FIR FD MathWorks.png
FONTE: Próprio autor.
Realização de filtros FIR na 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.

Figura 4.2 - Realização de filtros FIR na Forma Transposta
FIR FDT MathWorks.png
FONTE: Próprio autor.

Figura 4.3 - Realização de filtros FIR na Forma Transposta
FIR FDT2 MathWorks.png
FONTE: Próprio autor.
Realização de filtros FIR de fase linear

Os filtros FIR de fase linear podem ser com coeficientes simétricos (tipo I e II) ou antissimétricos (tipo III e IV).

Tipo I - Simétrico de ordem par

Figura 4.4 - Realização de filtros FIR de fase linear Simétrico I
FIR Sym2 MathWorks.png
FONTE: Próprio autor.
Tipo II - Simétrico de ordem impar

Figura 4.5 - Realização de filtros FIR de fase linear Simétrico II
FIR Sym1 MathWorks.png
FONTE: Próprio autor.
Tipo III - Antissimétrico de ordem par

Figura 4.6 - Realização de filtros FIR de fase linear Antisimétrico III
FIR AntiSym3 MathWorks.png
FONTE: Próprio autor.
Tipo IV - Antissimétrico de ordem impar

Figura 4.7 - Realização de filtros FIR de fase linear Antisimétrico IV
FIR AntiSym4 MathWorks.png
FONTE: Próprio autor.
Uso do Matlab e Simulink
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');


Aula 31 (6 jul)
  • 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.

Figura 4.8 - Separação do filtro IIR H(z) em H1(z) e H2(z)
H1 H2 MathWorks.png
FONTE: Próprio autor.
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 :

Figura 4.9 - Realização de filtros IIR na Forma Direta I
IIR FD1 MathWorks.png
FONTE: Próprio autor.
Com o ordenamento dos blocos e em ordem reversa teremos a Forma Direta II:

Figura 4.10 - Realização de filtros IIR na Forma Direta II
IIR FD2a MathWorks.png
FONTE: Próprio autor.
Considerando que os sinais no centro são idênticos podemos simplificar e obter a Forma Direta II (Canônica):

Figura 4.11 - Realização de filtros IIR na Forma Direta II Canônica
IIR FD2b MathWorks.png
FONTE: Próprio autor.
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.

Figura 4.12 - Realização de filtros IIR na Forma Transposta I
IIR FT1 MathWorks.png
FONTE: Próprio autor.

Figura 4.13 - Realização de filtros IIR na Forma Transposta II
IIR FT2 MathWorks.png
FONTE: Próprio autor.
  • 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.

Uso do Simulink para processamento de sinais

Aula 32 (9 jul)