Mudanças entre as edições de "PSD29007-Engtelecom(2020-2) - Prof. Marcos Moecke"
Linha 1 008: | Linha 1 008: | ||
− | ;Aula | + | ;Aula 18 (18 fev): |
− | * | + | *FIR - Conceitos gerais |
− | + | ||
+ | A função de transferência de transferência de um filtro digital FIR | ||
:<math>\begin{align} | :<math>\begin{align} | ||
H(z) &= b_0 + b_1 z + b_2 z^2 + ... + b_N z^N \\ | H(z) &= b_0 + b_1 z + b_2 z^2 + ... + b_N z^N \\ | ||
Linha 1 020: | Linha 1 021: | ||
\end{align}</math> | \end{align}</math> | ||
− | + | filtro FIR causal de ordem n mostrado acima pode ser descrito também através da equação de diferenças: | |
− | |||
:<math>\begin{align} | :<math>\begin{align} | ||
y[n] &= b_0 x[n] + b_1 x[n-1] + \cdots + b_N x[n-N] \\ | y[n] &= b_0 x[n] + b_1 x[n-1] + \cdots + b_N x[n-N] \\ | ||
Linha 1 028: | Linha 1 028: | ||
\end{align}</math> | \end{align}</math> | ||
− | + | Pode-se notar que a saída <math> y[n] </math> do filtro FIR é uma soma ponderada dos N valores mais recentes das entradas <math> x[n] </math> | |
− | + | A realização desse filtro pode ser feita através de algoritmos de software ou circuitos digitais usando por exemplo a estrutura: | |
<center>[[Arquivo:FIR_Filter.svg| 600px]] </center> | <center>[[Arquivo:FIR_Filter.svg| 600px]] </center> | ||
Linha 1 042: | Linha 1 042: | ||
Algumas vantagens que os filtros FIR tem sobre os IIR: | 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. | 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 <math> \tau =-\frac{d\theta}{dw} </math>, onde <math> \theta </math> é a resposta de fase do filtro. | ::O atraso de grupo é definido como as <math> \tau =-\frac{d\theta}{dw} </math>, onde <math> \theta </math> é a resposta de fase do filtro. | ||
Linha 1 089: | Linha 1 090: | ||
*Ver também [https://www.mathworks.com/help/signal/ref/fvtool.html fvtool], [https://www.mathworks.com/help/signal/ug/Controlling-FVTool-from-the-command-line.html Controlling FVTool from the MATLAB Command Line] e [https://www.mathworks.com/help/signal/examples/filter-analysis-using-fvtool.html Filter Analysis using FVTool]. | *Ver também [https://www.mathworks.com/help/signal/ref/fvtool.html fvtool], [https://www.mathworks.com/help/signal/ug/Controlling-FVTool-from-the-command-line.html Controlling FVTool from the MATLAB Command Line] e [https://www.mathworks.com/help/signal/examples/filter-analysis-using-fvtool.html Filter Analysis using FVTool]. | ||
− | ;Aula | + | ;Aula 19 (23 fev): |
+ | FIR - Filtros de fase linear | ||
− | + | *'''FIR tipo I:''' | |
Considere o exemplo de um filtro simétrico de ordem par (N=6) | Considere o exemplo de um filtro simétrico de ordem par (N=6) | ||
Linha 1 127: | Linha 1 129: | ||
Na qual se percebe que a fase linear é igual a <math> \theta (w) = -\frac{N}{2} w </math>, e portanto o atraso de grupo é <math> \tau = -\frac{d \theta}{d w} = \frac{N}{2} </math>, '''metade da ordem N do filtro'''. | Na qual se percebe que a fase linear é igual a <math> \theta (w) = -\frac{N}{2} w </math>, e portanto o atraso de grupo é <math> \tau = -\frac{d \theta}{d w} = \frac{N}{2} </math>, '''metade da ordem N do filtro'''. | ||
− | + | *'''FIR tipo II:''' | |
+ | |||
Considere o exemplo de um filtro simétrico de ordem impar (N=5) | Considere o exemplo de um filtro simétrico de ordem impar (N=5) | ||
:<math>\begin{align} | :<math>\begin{align} | ||
Linha 1 163: | Linha 1 166: | ||
Na qual se percebe que a fase linear é igual a <math> \theta (w) = -\frac{N}{2} w </math>, e portanto o atraso de grupo é <math> \tau = -\frac{d \theta}{d w} = \frac{N}{2} </math>, '''metade da ordem N do filtro'''. | Na qual se percebe que a fase linear é igual a <math> \theta (w) = -\frac{N}{2} w </math>, e portanto o atraso de grupo é <math> \tau = -\frac{d \theta}{d w} = \frac{N}{2} </math>, '''metade da ordem N do filtro'''. | ||
− | + | *'''FIR tipo III:''' | |
+ | |||
Considere o exemplo de um filtro antissimétrico de ordem par (N=6) | Considere o exemplo de um filtro antissimétrico de ordem par (N=6) | ||
Linha 1 202: | Linha 1 206: | ||
Na qual se percebe que a fase linear é igual a <math> \theta (w) = -\frac{N}{2} w + \pi /2 </math>, e portanto o atraso de grupo é <math> \tau = -\frac{d \theta}{d w} = \frac{N}{2} </math>, '''metade da ordem N do filtro'''. | Na qual se percebe que a fase linear é igual a <math> \theta (w) = -\frac{N}{2} w + \pi /2 </math>, e portanto o atraso de grupo é <math> \tau = -\frac{d \theta}{d w} = \frac{N}{2} </math>, '''metade da ordem N do filtro'''. | ||
− | + | *'''FIR tipo IV:''' | |
+ | |||
Considere o exemplo de um filtro antissimétrico de ordem impar (N=5) | Considere o exemplo de um filtro antissimétrico de ordem impar (N=5) | ||
:<math>\begin{align} | :<math>\begin{align} | ||
Linha 1 241: | Linha 1 246: | ||
− | + | *'''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". | 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". | ||
Linha 1 268: | Linha 1 274: | ||
− | ;Aula | + | ;Aula 20 (25 fev): |
Também devido a existência (ou não) de zeros em <math> z = 1 \equiv w = 0 </math> e <math> z = -1 \equiv w / \pi = 1 </math>, que corresponde a frequência de Nyquist <math> f_N = f_a/2 </math>, 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: | Também devido a existência (ou não) de zeros em <math> z = 1 \equiv w = 0 </math> e <math> z = -1 \equiv w / \pi = 1 </math>, que corresponde a frequência de Nyquist <math> f_N = f_a/2 </math>, 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: |
Edição das 15h27min de 5 de março de 2021
Unidade 1
Unidade 1 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
profile on
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).
|
Unidade 2 - Filtros IIR
Unidade 2 - Filtros IIR | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Na sequência será mostrado como inicialmente projetar o filtro LP protótipo, e depois as transformações em frequência.
%%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;
Os projetos de filtro Butterworth com função de transferência utilizam os polinômios de Butterworth mostrados na tabela a seguir:
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 . Figura 2.1 - Os primeiros cinco polinômios de Chebyshev de primeira ordem no domínio
Figura 2.2 - Resposta de magnitude de filtro protótipo Chebyshev
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.
%% 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))
%% Projeto de filtro passa-baixas usando funções do Matlab
%% Especificações do filtro
Wp =16000; Ws = 20000; Ap = 0.3; As = 20; G0= 3;
% Para analisar o filtro projetado, use fvtool(b,a) para observar plano s, resposta em magnitude, fase e atraso de grupo
%% Butterworth
[n,Wn] = buttord(Wp, Ws, Ap, As,'s')
[b,a] = butter(n,Wn, 's');
%% Chebyshev I
n = cheb1ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby1(n,Ap, Wp, 's');
%% Chebyshev II
n = cheb2ord(Wp, Ws, Ap, As,'s')
[b,a] = cheby2(n,As, Ws, 's');
%% Elliptic - Cauer
[n, Wn] = ellipord(Wp, Ws, Ap, As,'s')
[b,a] = ellip(n,Ap,As, Wn, 's');
fa = 200;
fN = fa/2;
wo = 60/fN; bw = 10/fN;
[b,a] = iirnotch(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000;
fN = fa/2;
wo = 941/fN; bw = 100/fN;
[b,a] = iirpeak(wo,bw);
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
fa = 8000; fN = fa/2;
fo = 1000; bw = 20/fN;
[b,a] = iircomb(fa/fo,bw,'peak'); % ou use a flag 'notch'
fvtool(b,a);
syms z;
N(z) = poly2sym(b,z);
D(z) = poly2sym(a,z);
H(z) = N(z)/D(z);
pretty(vpa(H(z),3))
|
Unidade 3 - Filtros FIR
Unidade 3 - Filtros FIR | ||
---|---|---|
A função de transferência de transferência de um filtro digital FIR 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: 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.
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 filtros de fase linear possuem algumas propriedades (respostas em frequência possíveis, distribuição dos zeros em simetria quadrantal), conforme é mostrado a seguir.
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 - Filtros de fase linear
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.
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.
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.
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.
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');
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:
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. FONTE:
Projeto de filtros FIR pelo método da série de FourierUsando 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
De modo semelhante é possível obter os coeficientes dos filtros HP, BP e BS.
onde sabe-se que , ou seja para e para .
Diferentemente do que se espera, a função sinc(x) é diferente de sin(x)/x, sendo igual a sin(pi*x)/(pi*x). Veja o help do próprio Matlab. sinc Sin(pi*x)/(pi*x) function. sinc(X) returns a matrix whose elements are the sinc of the elements of X, i.e. y = sin(pi*x)/(pi*x) if x ~= 0 = 1 if x == 0 where x is an element of the input matrix and y is the resultant output element. % Example of a sinc function for a linearly spaced vector: t = linspace(-5,5); y = sinc(t); plot(t,y); xlabel('Time (sec)');ylabel('Amplitude'); title('Sinc Function') See also square, sin, cos, chirp, diric, gauspuls, pulstran, rectpuls, and tripuls. Reference page in Help browser doc sinc
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. 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. 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.
L = 64;
wvtool(rectwin(L), triang(L), bartlett(L), hann(L), hamming(L), blackman(L), blackmanharris(L), nuttallwin(L));
ATUAL
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.
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])
wp = 0.2*pi; Ap = 1 dB; Gp = 0 dB ws = 0.4*pi; As = 40 dB;
|
Referências Bibliográficas
- ↑ 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,0 2,1 2,2 2,3 2,4 2,5 2,6 SHENOI, B. A. Introduction to Digital Signal Processing and Filter Design. 1.ed. New Jersey: John Wiley-Interscience, 2006. 440 p. ISBN 978-0471464822