Escolar Documentos
Profissional Documentos
Cultura Documentos
Processamento de Sinais PDF
Processamento de Sinais PDF
de
Sinais
Índice
0, n ≠ 0
δ [ n] =
1, n = 0
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 8
De forma mais geral, qualquer sequência x[n] pode ser representada como:
∞
x[ n] = ∑ x[k ]δ [n − k ]
k = −∞
1, n ≥ 0
u[ n] =
0, n < 0
O degrau relaciona-se com o impulso como:
n
u[n] = ∑ δ [k ]
k = −∞
M2
1
2) Média móvel: ∑ x[n − k ]
M 1 + M 2 + 1 k = − M1
Ex: Acumulador: y[ n ] = ∑ x[ k ]
k = −∞
então
∞
y[ n] = T { ∑ x[ k ]δ [ n − k ]}
k =−∞
Isso pode ser facilmente justificável com uma mudança de variável na Eq. 1.1.
Especificamente, podemos fazer m = n – k.
2) Distributividade:
x[n]*(h1[n] + h2[n]) = x[n]*h1[n] + x[n]*h2[n]
3) Conexão em Cascata
4) Conexão em Paralelo
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 13
5) Causalidade
Como definido anteriormente, um sistema é dito causal se sua resposta não
depende de eventos futuros. Ou seja, para calcular a saída de y[n0], precisamos
apenas de x[n], n ≤ n0. Isso implica na condição:
h[n] = 0, n < 0
Assim, para testar a causalidade basta testar se h[n] = 0 para n<0.
6) Estabilidade
A estabilidade é garantida se:
∞
S= ∑ | h[n] | < ∞
n = −∞
∑a
k =0
k y[ n − k ] = ∑ bk x[ n − k ]
k =0
(Eq. 1.3)
Assim, para cada valor de n a saída é dada pela entrada x[n] somada com o
valor anterior do acumulador, y[n – 1].
a) Adição de sequências:
A adição de amostra por amostra é dada por:
{x1[n]} + {x2[n]} = {x1(n) + x2(n)}
Deve ser observado que o comprimento das sequências x1[n] e x2[n] deve ser o
mesmo. Se as sequências têm comprimentos diferentes, a menor deve ser
completada para que tenha o mesmo comprimento da maior. Normalmente, isso
é feito, acrescentando zeros à sequência (zero padding).
b) Multiplicação de sequências:
Novamente, é uma operação amostra por amostra e as questões de
comprimento das sequências devem ser consideradas:
{x1[n]}.{x2[n]} = {x1(n).x2(n)}
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 15
c) Mudança de escala:
Cada amostra de uma sequência é multiplicada por um escalar α:
α.{x[n]} = {α.x(n)}
d) Deslocamento:
Cada amostra x(n) é deslocada k posições:
y[n] = {x(n – k)}
Seja m = n – k, então n = m + k e a operação pode ser vista como:
y[m + k] = {x(m)}
e) Inversão:
A sequência é posta de trás para frente. Seja x[n] uma sequência de
comprimento k. Logo, y[n] será:
y[n] = {x(k – n)}
f) Soma de amostras:
Soma as amostras de uma sequência dentro de um intervalo:
g) Produto de amostras:
Similar ao anterior, mas com operação de produto em um intervalo.
h) Energia:
A energia de uma sequência x[n] é dada por:
i) Potência:
A potência média de uma sequência periódica pode ser calculada como:
1
||
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 16
Y (ω ) = X (ω ) H (ω ) = CX (ω )e − jωn0
Θ(ω) = -ωn0
dΘ(ω )
τ g (ω ) = −
dω
submetidos à medida que ele passa da entrada à saída do sistema. Note que,
quando Θ(ω) é linear, τg(ω) = n0 = constante. Nesse caso, todas as componentes
de frequência do sinal de entrada sofrem o mesmo atraso de tempo.
ou na forma polar:
Podemos verificar facilmente que as Eqs. 1.4 e 1.5 são inversas realmente.
Especificamente, considere:
π
1 ∞ − jωm jωn
^
2π ∫−π m∑
= −∞
x[m]e e dω = x[n]
Se trocarmos a ordem da integração com o somatório, temos:
π
^ 1 ∞
x[n] = ∑ x[m] ∫π e
jω ( n − m )
dω
m = −∞ 2π −
π
1 sin(π (n − m)) 1, m = n
∫π e
jω ( n − m )
dω = =
2π −
π ( n − m) 0, m ≠ n
= δ [n − m]
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 21
Assim:
^ ∞
x[n] = ∑ x[m]δ [n − m] = x[n]
m = −∞
Exemplo 1:
Seja x[n] = anu[n].
A TF é dada por:
∞ ∞ ∞
1
X (e ) =
jw
∑ x[n]e
n = −∞
− jwn
= ∑a e
n =0
n − jwn
= ∑ ( ae − jw ) n =
n=0 1 − ae − jw
∞
1
OBS: ∑
α n
→ , para |α| < 1
n=0 1−α
Exemplo 2:
Vamos calcular a resposta ao impulso de um filtro passa-baixa ideal cuja
resposta em frequência é:
1, | w |< wc
H LPF (e ) =
jw
sin( wc n)
hLPF [n] = ,−∞ < n < ∞
πn
Exemplo 3:
Determine a resposta em frequência H(ejw) de um sistema cuja resposta ao
impulso h(n) = (0,9)nu[n]. Plote a magnitude e a fase.
1
= ℎ = 0,9 = 0,9 =
1 − 0,9
1 1
" " = # =
1 − 0,9$%&' + 0,9&'
√1,81 − 1,8$%&'
E a fase:
0,9&'
∠ = −arctan
1 − 0,9$%&'
Plotagem no MatLab:
w = [0:1:500]*pi/500;
H = exp(j*w)./(exp(j*w) - 0.9*ones(1, 501));
magH = abs(H); angH = angle(H);
subplot (2, 1, 1); plot (w/pi, magH); grid;
xlabel('frequency in pi units'); ylabel('|H|');
title('Magnitude response');
subplot (2, 1, 2); plot (w/pi, angH/pi); grid;
xlabel('frequency in pi units'); ylabel('Phase in pi Radians');
title('Phase response');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 23
Função Impulso
function [x, n] = impseq(n0, n1, n2) % Impulso
n = [n1:n2];
x = [(n-n0) == 0];
stem (x);
Exemplos:
1.
>> impseq (5, 0, 10);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 26
2.
x[n] = 2.δ[n + 2] - δ[n – 4], -5 ≤ n ≤ 5
>> n = [-5:5];
>> x = 2*impseq(-2, -5,5) - impseq(4, -5, 5);
>> stem (n, x); title ('Exemplo de Sequencia'); xlabel('n'); ylabel('x[n]');
Função Degrau
function [x, n] = stepseq(n0, n1, n2) % Degrau
n = [n1:n2];
x = [(n-n0) >= 0];
stem (x);
Exemplos
1.
>> stepseq (5, 0, 10);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 27
2.
x[n] = n[u[n] – u[n – 10]] + 10e-0.3(n – 10)[u[n – 10] – u[n – 20]], 0 ≤ n ≤ 20
>> n = 0:20;
>> x1 = n.*(stepseq(0,0,20) - stepseq(10,0,20));
>> x2 = 10*exp(-0.3*(n-10)).*(stepseq(10,0,20) - stepseq(20,0,20));
>> x = x1 + x2;
>> stem(n,x); title('Sequencia de Degraus'); xlabel('n'); ylabel ('x[n]');
Senóide
function x = sinseq(n1,n2) % Senóide
n = [n1:0.1:n2];
x = 3*cos(0.1*pi*n + pi/3) + 2*sin(0.5*pi*n);
stem (x);
Exemplo:
>> sinseq (0, 10);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 28
Operações em sequências
Adição de sinais
y[n] = x1[n] + x2[n]
Multiplicação de sinais
y[n] = x1[n].x2[n]
Inversão
y[n] = x[-n]
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 29
Convolução
Considere as sequências:
x = [3, 11, 7, 0, -1, 4, 2], -3 ≤ n ≤ 3
h = [2, 3, 0, -5, 2, 1]; -1 ≤ n ≤ 4
x[n] h[n]
Podemos usar a função conv do MatLab diretamente:
y= 6 31 47 6 -51 -5 41 18 -22 -3 8 2
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 31
O problema do uso da função conv é que não sabemos, na resposta, onde está
a origem da sequência. Para tanto, vamos criar uma nova função:
y= 6 31 47 6 -51 -5 41 18 -22 -3 8 2
ny = -4 -3 -2 -1 0 1 2 3 4 5 6 7
N M
∑a
k =0
k y[ n − k ] = ∑ bk x[ n − k ]
k =0
No MatLab, fazemos:
>> x = impseq(0, -20, 120);
>> n = [-20:120];
>> h = filter(b, a, x);
>> stem(n, h); title('Resposta ao impulso'); xlabel('n'); ylabel('h[n]');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 33
No MatLab, fazemos:
>> x = stepseq(0, -20, 120);
>> n = [-20:120];
>> h = filter(b, a, x);
>> stem(n, h); title('Resposta ao degrau'); xlabel('n'); ylabel('s[n]');
c) O sistema é estável?
Como vimos, um sistema é estável se:
∞
S= ∑ | h[n] | < ∞
n = −∞
Assim, no MatLab, basta fazermos:
>> sum(abs(h))
Ans = 14.8785
1.8 Exercícios
1. Considere um sistema linear arbitrário com entrada x[n] e saída y[n]. Mostre
que se x[n] = 0 para todo n, então y[n] deve ser zero para todo n também.
3. Para cada sistema abaixo, determine se ele é (1) estável, (2) causal, (3)
linear, (4) invariante no tempo e (5) sem memória:
5. Para cada par de sequências abaixo, use convolução discreta para encontrar
a resposta à entrada x[n] do sistema linear invariante no tempo com resposta ao
impulso h[n].
a)
b)
6. Considere o sistema com entrada x[n] e saída y[n] que satisfaz a equação de
diferenças:
y[n] = n.y[n – 1] + x[n]
O sistema é causal tal que, se x[n] = 0, para n < 0, então y[n] = 0, para n < 0.
8. Seja x[n] = {1, -2, 4, 6, -5, 8, 10}, gere e plote no MatLab as seguintes
sequências:
a) x[n] = 3.x[n + 2] + x[n – 4] – 2.x[n]
b) x[n] = 5.x[5 + n] + 4.x[n + 4] + 3.x[n]
2. A Transformada Z
A Transformada Z (TZ) é uma ferramenta matemática poderosa para análise de
sinais e sistemas. A transformada Z constitui a forma discreta da transformada
de Laplace. Seja a Transformada de Fourier (TF) de uma sequência dada por:
∞
X (e ) =jw
∑ x[
n = −∞
n ]e − jwn
∑ | x[n]z
n =0
−n
|<∞
Entre as mais úteis e importantes TZs estão aquelas para as quais X(z) é uma
função racional dentro da região de convergência, i.e.:
P( z )
X ( z) =
Q( z )
onde P(z) e Q(z) são polinômios em z. Os valores de z que fazem X(z) = 0 são
chamados de zeros de X(z). Os valores de z para os quais X(z) tende a infinito
são chamados de pólos de X(z). Os pólos de X(z) são as raízes do polinômio do
denominador.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 40
∞ ∞ ∞ ∞
= ∑ ax [n]z
n = −∞
1
−n
+ ∑ bx [n]z
n = −∞
2
−n
= a ∑ x1[ n] z
n = −∞
−n
+ b ∑ x2 [ n ] z − n
n = −∞
= aX1(z) + bX2(z)
b) Deslocamento no tempo: x[n + n0] ↔ zn0.X(z), ROC = ROCx (cuidado deve ser
tomado observando o que acontece para z = 0 ou z = ∞).
Comentários:
Suponha que y[n] = x[n – n0]. Logo:
∞
Y ( z) = ∑ x[n − n ]z
n = −∞
0
−n
Fazendo m = n – n0:
∞ ∞ ∞
Y (z) = ∑ x[m]z
m = −∞
− ( m +n 0 )
= ∑ x[m]z
m = −∞
−m
.z − n0
=z − n0
. ∑ x[ m]z − m
m = −∞
Y ( z ) = z − n0 . X ( z )
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 41
Tal que:
∞
Y ( z) = ∑ y[n]z
n = −∞
−n
∞
∞
= ∑ ∑ x1 [k ]x 2 [n − k ] z − n
n = −∞ k = −∞
∞
∞ −m −k
Y ( z ) = ∑ x1[k ] ∑ x 2 [m]z z
k = −∞ m = −∞
Assim, para valores de z dentro das regiões de convergência para X1(z) e X2(z),
podemos escrever:
Y ( z) = X 1 ( z) X 2 ( z)
∞
dX ( z )
= ∑ ( − n) x[n]z − n −1 . (-z)
d ( z ) n = −∞
∞
dX ( z )
−z = − z ∑ ( − n) x[ n] z − n −1
d (z) n = −∞
∞
dX ( z )
−z = ∑ nx[ n] z − n = Z {nx[n]}
d ( z ) n = −∞
∞ ∞
X (z) = ∑ x[m]z
m = −∞
m
= ∑ x[m]( z
m = −∞
−1 − m
) = X ( z −1 )
ROC:
|az-1| < 1 ⇒ |z| > |a|
∞
1 z
X ( z ) = ∑ ( az −1 ) n = = , | z |>| a |
n=0 1 − az −1 z − a
Para a = 1:
1
x[n] = u[n] ←→
Z
X ( z) = −1
, | z |> 1
1− z
n = −∞ n =1 n =0
ROC:
|a-1z|<1 ⇒ |z|<|a|
∞
1 z
X ( z ) = 1 − ∑ ( a −1 z ) n = 1 − −1
= , | z |<| a |
n=0 1− a z z − a
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 46
∞ ∞ 1 n 1
n
− n
X ( z) = ∑ x[n]z −n
= ∑ u[n ] + − u[ n] z
n = −∞
n = −∞ 2 3
∞ ∞n n
1 1
X ( z ) = ∑ u[n]z + ∑ − u[n]z − n
−n
n = −∞ 2 n = −∞ 3
∞ n n
1 −n ∞ 1 −n
X ( z ) = ∑ z +∑ − z
n =0 2 n =0 3
∞ n n
1 −1 ∞ 1 −1
X ( z ) = ∑ z +∑ − z
n=0 2 n=0 3
(i) (ii)
ROC(i) = |(1/2).z-1| < 1 ⇒ |z| > 1/2
ROC(ii) = |(-1/3).z-1| < 1 ⇒ |z| > 1/3
ROC = ROC(i) ∩ ROC(ii) = |z| > 1/2
1 1
X ( z) = +
1 1
1 − z −1 1 + z −1
2 3
Para X(z), os pólos são dados por z=1/2 e z=-1/3 e os zeros são z=0 e z=1/12.
Uma das propriedades da ROC que podemos observar aqui é que os pólos não
fazem parte dela.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 47
∞ 1 n
∞
1
n
−n
X ( z) = ∑ x[n]z −n
= ∑ − u[ n] − u[ − n − 1] z
n = −∞
n = −∞ 3 2
∞ ∞ n n
1 1
X ( z ) = ∑ − u[n]z − ∑ u[− n − 1]z − n
−n
n = −∞ 3 n = −∞ 2
∞ n n
1 − n −1 1 − n
X ( z) = ∑ − z − ∑ z
n=0 3 n = −∞ 2
∞ n −n
1 −n ∞ 1 n
X ( z ) = ∑ − z −∑ z
n =0 3 n =1 2
n
∞
1 1
n ∞ −1
X ( z ) = ∑ − z −1 + 1 −∑ z
n =0 3 2
n=0
(i) (ii)
ROC(i) = |(-1/3).z-1| < 1 ⇒ |z| > 1/3
ROC(ii) = |(1/2)-1.z| < 1 ⇒ |z| < 1/2
ROC = ROC(i) ∩ ROC(ii) = 1/3 < |z| < 1/2
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 48
ROC(i)
ROC(ii)
ROC:
1 1 1 2z
X ( z) = +1− = −
1
1 + z −1 1 − 2 z 1 + 1 z −1 1 − 2 z
3 3
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 49
Exemplo 5:
Função delta δ[n]: δ[n] = 0, n ≠ 0, e δ[n] = 1, n = 0
Transformada Z:
∞
X (z) = ∑ x[n]z
n = −∞
−n
= 1.z 0 = 1
Nos exemplos 5 e 6, x(n) é finita. X(z) é um polinômio de base z-1 e todo o plano
Z menos quando z = 0. Nesse ponto, a transformada não é definida.
π
1 − (0,5. cos ) z −1
πn 3
z[(0,5) n cos( )u[n]] =
3 π
1 − 2(0,5. cos ) z −1 + 0,25 z − 2
3
πn 1 − 0,25z −1
z[(0,5) cos( )u[n]] =
n
, ROC = |z| > 0,5
3 1 − 0,5 z −1 + 0,25 z −2
Assim:
d
−1 1 − 0,25 z −1
X ( z) = − z
dz 1 − 0,5 z −1 + 0,25 z −2
5) Se x[n] é causal (right-sided), a ROC extende-se para além dos pólos mais
externos, possivelmente tendendo a infinito.
6) Se x[n] é não causal (left-sided), a ROC extende-se para uma região menor
que o menor pólo até zero.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 52
∫ X ( z) z
k −1
dz = ∫ ∑ x[ n ] z k −1− n
dz
(1)
C C n = −∞
onde C denota o contorno fechado na ROC de X(z), tomado no sentido anti-
horário. Como a série converge nesse contorno, podemos mudar a ordem da
integração e do somatório no lado direito, ficando com:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 53
∫ X ( z) z
k −1
dz = ∑ x[n]∫ z
n = −∞
k −1− n
dz
(2)
C C
Pelo teorema de integração de Cauchy:
1 1, n = k
2πj C∫
k −1− n
z dz =
0, n ≠ k (3)
onde C é qualquer contorno que inclui a origem. Aplicando (3), o lado direito de
(2) reduz-se a 2πj.x[k] e assim a fórmula inversa é alcançada:
1
∫
k −1
x[k ] = X ( z ) z dz
2πj C (4)
1
X ( z) =
1 , |z|> ½
1 − z −1
2
Por observação, sabemos que:
x[n] = -(½)nu[-n – 1]
Notadamente, o método da inspeção não é o mais apropriado para calcular TZs
inversas mais complexas.
Para ver como obter uma expansão em frações parciais, vamos assumir que
X(z) pode ser expressa como uma razão de polinômios em z-1, i.e.,
M
∑b z
k =0
k
−k
X ( z) = N
∑a
k =0
k z −k
M −N N
Ak
X ( z) = ∑ Br z
r =0
−r
+∑
k =1 1 − d k z
−1
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 55
Exemplo 8: Suponha:
1 + 2 z −1 + z −2 1 + 2 z −1 + z −2
X ( z) = =
3 −1 1 − 2 1
1− z + z (1 − z −1 )(1 − z −1 )
2 2 2
Vamos considerar que:
A1 A2
X ( z ) = B0 + + =
1 −1 1 − z −1
1− z
2
1 −1 1
B0 (1 − z )(1 − z −1 ) + A1 (1 − z −1 ) + A2 (1 − z −1 )
= 2 2
1
(1 − z −1 )(1 − z −1 )
2
1 1 1
B0 (1 − z −1 − z −1 + z −2 ) + A1 (1 − z −1 ) + A2 (1 − z −1 )
= 2 2 2
1
(1 − z −1 )(1 − z −1 )
2
Logo:
3 1 1
( B0 + A1 + A2 ) + z −1 (− B0 − A1 − A2 ) + z −2 ( B0 )
X ( z) = 2 2 2 =
1 −1 −1
(1 − z )(1 − z )
2
1 + 2 z −1 + z −2
=
1
(1 − z −1 )(1 − z −1 )
2
Assim, temos:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 56
B0 + A1 + A2 = 1
3 1
− B0 − A1 − A2 = 2
2 2
1
B0 = 1 ⇒ B0 = 2
2
Com isso, ficamos com:
2 + A1 + A2 = 1 A1 + A2 = −1
− 3 − A − 1 A = 2 ⇒ A + 1 A = −5
1
2
2 1 2 2
Resolvendo, temos:
A1 = -9 e A2 = 8
Logo:
−9 8
X ( z) = 2 + +
1 −1 1 − z −1
1− z
2
que corresponde à Transformada Z da sequência:
1
x[ n] = 2δ [ n] − 9.( ) n u[ n] + 8.u[ n]
2
A expansão em série de potências é aplicada quando a transformada Z é um
polinômio da forma:
∞
X ( z) = ∑ x[n]z
n = −∞
−n
1 −1
X ( z ) = z 2 (1 − z )(1 + z −1 )(1 − z −1 )
2
Uma expansão em frações parciais para esse caso não é apropriada. No
entanto, efetuando os produtos, podemos reduzir a expressão a:
1 1
X ( z) = z 2 − z − 1 + z −1
2 2
que equivale à sequência:
x[n] = δ[n + 2] – ½.δ[n + 1] - δ[n] + ½.δ[n – 1]
z
X ( z )=
3z 2 − 4 z + 1
Primeiro, vamos re-arranjar X(z) tal que ela se torne uma função em potências
de z-1:
z −1 0 +z −1
X ( z )= =
3 − 4 z −1 + z − 2 3 − 4 z −1 + z − 2
Usando o MatLab, temos1:
>> b = [0 1];
>> a = [3 -4 1];
>> [R, p, C] = residuez(b, a)
R=
0.5000
-0.5000
p=
1.0000
0.3333
1
Para mais informação sobre a função residuez, digite help residuez no MatLab.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 58
C= []
que corresponde a:
0,5 0,5
X (z) = −1
−
1− z 1
1 − z −1
3
De maneira similar, podemos voltar à forma anterior:
que corresponde a:
1
0 + z −1
3 z −1 0 +z −1
X ( z )= = =
4 −1 1 − 2 3 − 4 z −1 + z − 2 3 − 4 z −1 + z − 2
1− z + z
3 3
como antes.
Exemplo 10: Calcule a transformada Z inversa de:
1
X ( z) =
(1 − 0,9 z −1 ) 2 (1 + 0,9 z −1 ) , |z|>0,9
>> a = poly([-0.9 -0.9 0.9]) % calcula os coeficientes do polinômio que tem essas
raízes
a= 1.0000 0.9000 -0.8100 -0.7290
>> [R, p, C] = residuez(b, a)
R=
0.2500
0.2500 - 0.0000i
0.5000 + 0.0000i
p=
0.9000
-0.9000 + 0.0000i
-0.9000 - 0.0000i
C= []
Isso significa que X(z) pode ser expandido em frações parciais como:
5
x[ n] = 0,25.(0,9) n u[ n] + ( n + 1)(0,9) n +1 u[n + 1] + 0,25(−0,9) n u[n]
9
Vamos tentar deixar todas as parcelas em função de u[n]. Para tanto, vamos
trabalhar na segunda parcela:
5
( n + 1)(0,9) n+1 u[n + 1]
9
Observe que: a.u[n + 1] = a.u[n -1] + a.u[n]. Logo:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 60
5 5 5
(n + 1)(0,9) n+1 u[ n + 1] = ( n + 1)(0,9) n+1 + ( n + 1)(0,9) n+1 u[n]
9 9 n= −1 9
5 5
(n + 1)(0,9) n+1 u[n + 1] = (n + 1)(0,9) n+1 u[n ]
9 9
5
= (n + 1).0,9.(0,9) n u[n] = 0,5(n + 1)(0,9) n u[n ]
9
= 0,5n(0,9) n u[n] + 0,5(0,9) n u[n]
Logo:
2.6 Exercícios
3. Seja x[n] uma sequência com transformada Z dada por X(z). O que se pode
dizer sobre as sequências que geram as seguintes transformadas:
a. X1(z) = [(z – 1)/z]X(z)
b. X2(z) = z.X(z-1)
1 − z −1 − 4 z −2 + 4 z −3
X 1 ( z) =
11 13 1
1 − z −1 + z − 2 − z −3
4 8 4
sabendo que a sequência é causal.
2 + 3 z −1
X1 (z) = , |z| > 0,9
1 − z −1 + 0,81z −2
Encontre as primeiras 20 amostras de x[n], usando o MatLab.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 63
3. Teorema da Amostragem
Sinais discretos no tempo podem ser gerados de diferentes formas, mas a mais
comum é sendo uma representação de sinais contínuos no tempo. Em parte,
isso é devido ao fato que o processamento de sinais contínuos no tempo é feito
através do processamento discreto no tempo de sequências obtidas através de
amostragem. Um sinal contínuo no tempo pode ser representado por amostras
como na Fig. 3.1.
Fig. 3.1. Exemplo: (esquerda) sinal original e (direita) amostragem desse sinal.
Embora essa condição não seja rigorosamente verificada, ela é bastante útil em
termos práticos.
Prova:
Se as amostras são obtidas a cada Ts segundos, considera-se então um trem
de impulsos δTs(t)
∞
δ Ts (t ) = ∑ δ (t − nTs )
n = −∞
∞
f s (t ) = f (t ).δ Ts (t ) = ∑ f (t ).δ (t − nTs)
n = −∞
Então a função amostrada contém apenas informações acerca das amostras
f(nTs), n = 0, 1, 2, 3, ...., pois
∞
f s (t ) = ∑ f (nTs).δ (t − nTs)
n = −∞
Toda a informação de um sinal banda limitada em fm Hz está contida nas
amostras colhidas em intervalos uniformes menores que ½ fm Hz.
Fig. 3.4. (topo) Exemplo de um sinal e sua transformada banda limitada em wm.
(centro) Trem de impulsos e sua transformada e (embaixo) o resultado da
amostragem do sinal; sua transformada é analisada a seguir.
Se:
fs(t) ↔ Fs(w)
Então, o espectro de fs(t) é dado por:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 71
∞ ∞
1 w
Fs ( w) = F ( w) * ∑ wsδ ( w − nwS ) = s ∑ F ( w)δ ( w − nw )
2π 2π
S
n = −∞ n = −∞
∞
1
Fs ( w) =
Ts
∑ F ( w)δ (w − nw
n =−∞
S ) , com ws = 2π/Ts
e, finalmente,
∞
1
Fs ( w) =
Ts
∑ F (w − nw
n = −∞
S )
Este espectro é esboçado para vários valores de ws, isto é, vários valores para o
espaçamento Ts entre amostras.
a)
b)
c)
d)
Fig. 3.5. a) Sinal original banda limitado em wm; resultado no domínio da
frequências de amostragens com: b) ws > 2wm, c) ws = 2wm, d) ws < 2wm
(sobreposição de sinais – aliasing).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 73
Esses problemas podem ser vistos na Fig. 3.7. A Figura 3.8 mostra uma
distorção desse tipo em uma imagem. Esse problema (conhecido como efeito
Moirée) surgiu por causa de uma baixa resolução utilizada na digitalização da
imagem. Ele se apresenta de forma mais forte em partes da imagem que
tenham um padrão repetitivo (como essas linhas circulares).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 74
Fig. 3.7. Distorções que podem ser provocadas por escolha errada na banda de
passagem do fitro passa-baixa para recuperação do sinal de entrada após a
amostragem.
Ts wm ∞
f (t ) = ∑ s
π n= −∞
f ( nT )δ (t − nTs * Sa ( wm t )
)
∞
Ts wm
f (t ) =
π
∑ f (nT )[δ (t − nT ) * Sa (w t )]
n = −∞
s s m
Observações
a) Nos pontos de amostragem nT, o valor correto de f(t) é f(nT). Em T = 0,
todas as funções sample se anulam, exceto aquele centrado em t=0, cujo
valor é f(0). Em t=T apenas a sample aí centrada não é nula, e assim por
diante.
4. Filtros Digitais
Um sistema discreto no tempo é definido matematicamente como uma
transformação que mapeia uma sequência de entrada x[n] em uma sequência
de saída y[n]. Isso pode ser denotado por:
y[n]=T{x[n]}
como representado na Fig. 4.1.
então
∞
y[ n] = T { ∑ x[ k ]δ [ n − k ]}
k = −∞
∑a
k =0
k y[ n − k ] = ∑ bk x[ n − k ]
k =0
(Eq. 4.3)
Filtros digitais são formados por poucos componentes. Basicamente são apenas
multiplicadores, somadores e elementos de retardo (delay). Desses,
multiplicadores e somadores implementam essas operações aritméticas em
sequências discretas. Retardos são unidades que processam elementos
anteriores de uma sequência (Fig. 4.2).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 80
b
H (z) =
1 − a1 z −1 − a 2 z − 2
∑b z k
−k
Y ( z)
H ( z) = k =0
N
=
X ( z)
1 − ∑ ak z − k
k =1
N M
y[ n] = ∑ ak y[ n − k ] + ∑ bk x[ n − k ]
k =1 k =0
N
y[ n] = v[ n] + ∑ ak y[ n − k ]
k =1
Suponha na Fig. 4.7 que o sistema tem uma entrada x[n] = [1, 0]. Sendo um
sistema causal, a entrada para n < 0 é igual a zero. Assim, para n = 0, temos:
E, para n = 1:
b 0 ≤ n ≤ M −1
h[n] = n
0 senão
e a representação em equação de diferenças é:
y[n] = b0x[n] + b1x[n – 1] + ... + bN-1x[n – M + 1]
Filtros notch são bastante úteis quando frequências específicas devem ser
eliminadas. Isso acontece, por exemplo, quando precisamos eliminar a
frequência de 60Hz (e seus harmônicos) da rede elétrica.
Os filtros da Fig. 4.8 são filtros ideais não realizáveis. A Fig. 4.9 apresenta filtros
com uma mudança mais suave da banda de passagem para a banda de corte
(no FPB) e vice-versa (no FPA).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 88
Por exemplo, um filtro apenas com coeficientes [0,5 0,5] comporta-se como um
FPB. Seu comportamento foi avaliado anteriormente, tendo sua saída definida
por:
y[n] = 0.5.x[n] + 0.5.x[n - 1]
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 89
que é o mesmo que y[n] = (x[n] + x[n – 1])/2. Por isso, filtros passa-baixa são
chamados, às vezes, de filtro da média.
x = [0.5, -0.5];
f = fft(x,8192);
Freq = -5:10/8192:5-1/8192;
plot(Freq, abs(fftshift(f)));
Fig. 4.11. (esquerda) Sequência [0,5 0,5] e sua transformada de Fourier (um
FPB) e (direita) a sequência [0,5 -0,5] e sua transformada (um notch FPA).
Dois outros tipos de filtros são notch e passa-faixa. Filtros notch eliminam
frequências específicas. Filtros passa-faixa têm duas bandas de passagem. A
Fig. 4.12 mostra exemplos desses dois filtros.
Exemplo:
>> B2 = fir1(100, 0.3, 'low');
>> x = zeros (1, 1000);
>> x(50) = 1; % x é um impulso
>> Y2 = fft(conv(x, B2));
% apresentamos metade apenas pois o resto é simétrico
>> half = 1:ceil(length(Y2)/2);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 91
4.2.1 Sistemas com Fase Linear
1 π 1 π
∫ πe ∫ πe
− jωα jωn − jω (α − n )
hid [n] = e dω = dω
2π − 2π −
1 1 π 1 1 π
= e −ω ( jα − jn ) = e − jω (α − n ) =
2π j (n − α ) −π 2π j ( n − α ) −π
1 1
= [e − jπ (α − n ) − e jπ (α − n ) ]
2π j (n − α )
Sabendo que senα = (e jα − e − jα ) / 2 , temos:
1 1 1
[e − jπ (α − n ) − e jπ (α − n ) ] = sen[π (n − α )]
2π j (n − α ) π (n − α )
sen[π ( n − α )]
hid [n] =
π (n − α ) , -∞< n < ∞ (Eq. 1)
Assim
sen[π ( n − α )]
y[ n] = x[n] * hid [n] = x[n] *
π (n − α )
∞
sen[π (n − α − k )]
y[n] = ∑
k = −∞
x[k ]
π (n − α − k )
Logo:
y[n] = x[ n] * δ [n − nd ]
Ou seja, a mesma sequência de entrada apenas deslocada de nd amostras.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 94
Por exemplo, considere uma resposta em frequência com fase linear da forma
H(ejω) = |H(ejω)|e-jωα, |ω| < π
Suponha que H(ejω) é o filtro passa-baixa:
sen[ωc (n − α )]
hLP [n] =
π (n − α )
Se ωc = π, temos a Eq. 1. Quando α é um inteiro, digamos α = nd:
sen[ωc (2nd − n − nd )]
hLP [2nd − n] = =
π ( 2nd − n − nd )
sen[ωc (nd − n)]
⇒ hLP [ 2nd − n] = = hLP [ n]
π (nd − n)
Nesse caso, temos um sistema de fase zero (zero phase system). Se α = -nd:
^ ^ ^
jω jω jωnd jω
H LP (e ) = H LP (e )e =| H LP (e ) |⇒ h LP [n] = h LP [−n]
Assim:
∞ ∞ ∞
jω
H (e ) = ∑ h[n]e
n = −∞
− jω n
= ∑ h[n]cos ωn − j ∑ h[n]senωn
n = −∞ n = −∞
e
∞
A(e ) sen( β − ωα ) = − ∑ h[n]senωn
jω
n = −∞
Com isso:
∞
sen( β − ωα )
− ∑ h[n]senωn
tg ( β − ωα ) = = n = −∞
∞
cos( β − ωα )
∑ h[n] cos ωn
n = −∞
Fazendo uma multiplicação cruzada dos dois lados da igualdade acima, temos:
∞ ∞
sen( β − ωα ). ∑ h[n] cos ωn = − cos( β − ωα ) ∑ h[n]senωn
n = −∞ n = −∞
∞ ∞
⇒ sen( β − ωα ). ∑ h[n] cos ωn + cos( β − ωα ) ∑ h[n]senωn = 0
n = −∞ n = −∞
∞ ∞
⇒ ∑ h[n ]sen ( β − ωα ) cos ωn + ∑ h[n ] cos( β − ωα )senωn = 0
n = −∞ n = −∞
∞
⇒ ∑ h[n ][sen( β − ωα ) cos ωn + cos( β − ωα )senωn ] = 0
n = −∞
∞
⇒ ∑ h[n]sen(β − ωα + ωn) = 0
n = −∞
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 97
∞
⇒ ∑ h[n]sen[ω (n − α ) + β ] = 0
n = −∞
(Eq. 3)
ou
∞
∑ h[n]sen[ω (n − α )] = 0
n = −∞
(Eq. 5)
∑ h[n] cos[ω (n − α )] = 0
n = −∞
(Eq. 6)
∞
⇒ ∑ h[2α − n]sen[ω (α − n)] = 0
n = −∞
(Eq. 7)
Com isso, temos dois conjuntos de condições para garantir um sistema de fase
linear generalizada:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 98
i)
β = 0 ou π
2α = M inteiro
h[2α - n] = h[n]
ii)
β = π/2 ou 3π/2
2α = M inteiro
h[2α - n] = -h[n]
∑ h[n]sen[ω (n − α ) + β ] = 0
n =0
Causalidade implica h[n] = 0, para n < 0 e n > M (para um sistema FIR, já que a
resposta ao impulso é finita), i.e., sistemas FIR causais têm fase linear
generalizada se eles têm resposta ao impulso de comprimento (M + 1) e
satisfaz:
h[2α - n] = h[n]
ou
h[2α - n] = -h[n]
No primeiro caso, temos, para β = 0 ou π:
n=0
onde
c[k] = 2h[(M/2) - k], k = 1, 2, ..., M/2
Nesse caso, H(ejw) tem a forma:
H(ejw) = AI(ejw)e-jwM/2 + jπ/2
onde
d[k] = 2h[(M+1)/2 - k], k = 1, 2, ..., (M + 1)/2
e H(ejw) tem a forma:
H(ejw) = AI(ejw)e-jwM/2 + jπ/2
Exemplos:
h[n] = h[M – n]
A resposta em frequência é:
4
1 − e − jw 5 − jw 2 sin(5w / 2)
H (e ) = ∑ e
jw − jwn
= = e
n=0 1 − e − jw sin(w / 2)
Magnitude e fase:
h[n] = h[M – n]
A resposta em frequência é:
sin(3w)
H (e jw ) = e − jw ( 5 / 2)
sin( w / 2)
Magnitude e fase:
Magnitude e fase:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 103
Magnitude e fase:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 104
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 105
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 106
Se um impulso passa por esse filtro teremos como resposta as seguintes saídas,
considerando o filtro causal:
Entrada Saída
0 0
1 0,6
0 0,44
0 0,176
.... ....
Entrada Saída
0 0
1 0,6
0 0,8
0 0,8
.... ....
Esse é um filtro IIR. A saída será sempre 0,8 mesmo a entrada permanecendo
0. Nesse próximo exemplo, a saída cresce mesmo com entrada zero.
Entrada Saída
0 0
1 0,6
0 0,86
0 0,946
.... ....
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 108
N M
y[ n] − ∑ a k y[n − k ] = ∑ bk x[ n − k ]
k =1 k =0
∑k
b z
k =0
−k
H ( z) = N
1 − ∑ a k z −k
k =1
Suas formas Direta I e Direta II são mostradas nas Figs. 4.14 e 4.15.
1 + 2 z −1 + z −2
H ( z) =
1 − 0.75 z −1 + 0.125 z − 2
A forma direta I e II podem ser desenhadas como:
Forma direta I:
Exemplo 2: Conexão em cascata
Considere a função de sistema:
1 + 2 z −1 + z −2 1 + z −1 1 + z −1
H (z) = = .
1 − 0.75 z −1 + 0.125 z −2 1 − 0.5 z −1 1 − 0.25 z −1
Como os pólos e zeros são reais, uma estrutura em cascata tem seções com
coeficientes reais. Duas estruturas em cascata equivalentes podem ser criadas
para essa função:
i)
ii)
Exemplo 3: Conexão em paralelo:
Considere a função de sistema (observe que é a mesma função anterior):
1 + 2 z −1 + z −2 − 7 + 8 z −1
H ( z) = =8+
1 − 0.75 z −1 + 0.125z −2 1 − 0.75 z −1 + 0.125 z −2
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 111
A forma paralela para esse sistema com uma seção de segunda ordem é:
Como os pólos são reais, podemos obter ainda uma forma paralela alternativa
expandindo H(z) como:
− 7 + 8 z −1 18 25
H (z) = 8 + = 8 + −
1 − 0.75z −1 + 0.125z −2 1 − 0.5 z −1 1 − 0.25z −1
que gera o diagrama abaixo apenas com seções de primeira ordem:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 112
4.4 Exercícios
10 + 2.5 z −2 − 0.5 z −3
H ( z) =
1 − 0.25 z − 2
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II.
H ( z ) = 1 + z −1 + 0.25z −2 + 0.25z −3
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II. Esse filtro é FIR
ou IIR?
1 + 2 z −1 + z −2
H ( z) =
3 1
1 − z −1 + z −2
4 8
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II.
| H (e jω ) |
escala dB = − 20 log 10 ≥0
| H (e jω ) | max
Essa é a forma mais comum na prática e é usada tanto para filtros FIR quanto
IIR. Vamos considerar o projeto de um filtro passa-baixa como exemplo.
1 − δ1 δ2
RP = −20 log10 >0 e
AS = −20 log10 >0
1 + δ1 1 + δ1
Exemplo:
As especificações de um FPB definem as ondulações da banda de passagem
em 0,25 dB e a atenuação na banda de corte em 50 dB. Determine δ1 e δ2.
RP = 0,25 = -20 log10 [(1 - δ1)/(1 + δ1)] ⇒ δ1 = 0,0144
AS = 50 = -20 log10 [δ2/(1 + δ1)] ⇒ δ2 = 0,0032
Especificações semelhantes podem ser dadas para outros tipos de filtros
seletores de frequência (como passa-alta ou passa-faixa).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 117
A seguir, vamos projetar filtros digitais FIR. Esses filtros têm diversas vantagens
de projeto e implementação:
• A resposta em fase pode ser exatamente linear;
• São relativamente simples de projetar já que eles não têm problemas de
estabilidade;
• São eficientes para implementar;
• A Transformada Discreta de Fourier pode ser usada em sua
implementação.
Para o projeto de filtros FIR, as técnicas são divididas nas seguintes categorias:
• Projeto usando janelas
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 118
1.e − jαω ,
jω | ω |≤ ω c
H d (e ) =
0, ω c <| ω |≤ π
onde wc é chamado de frequência de corte (cut-off) e α é chamado de atraso de
amostra (sample delay). A resposta ao impulso desse filtro é de duração infinita
e é dada por:
π
1
∫
−1 jω jω jωn
hd [ n] = ℑ [ H d (e )] = H ( e ) e dω
2π
d
−π
ωC
1 sen[ωc ( n − α )]
∫
− jαω jωn
hd [ n] = 1.e e dω =
2π −ωC
π (n − α )
Para obter um filtro FIR a partir de hd[n], precisamos truncar hd[n] em ambos os
lados. Para obter um filtro FIR causal de fase linear h[n] de comprimento M,
devemos ter:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 119
hd [n], 0 ≤ n ≤ M − 1
h[n] =
0, senão
e
α = (M – 1)/2.
1, 0 ≤ n ≤ M − 1
w[n] =
0, senão
é uma janela retangular.
π
1
H (e ) = H d (e ) * W (e ) = ∫ W (e jλ ) H d (e j ( w −λ ) )dλ
jw jw jw
2π −π
Podemos ver essa convolução na Fig. 5.3 para uma janela comum.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 120
Observações:
1. Como a janela w[n] tem comprimento finito igual a M, sua resposta em
frequência tem uma região de pico central (lóbulo principal) cuja largura é
proporcional a 1/M e tem lóbulos laterais com pesos menores.
2. A convolução gera uma versão da resposta ideal Hd(ejw), mas com algumas
distorções (ondulações).
3. A largura da banda de transição é proporcional a 1/M.
4. Os lóbulos laterais produzem ondulações que têm forma similar tanto na
banda de passagem quanto na de corte.
1) Janela Retangular
Essa é a janela mais simples, mas que provê o pior desempenho em termos de
atenuação da banda de corte. Ela é definida como:
1, 0 ≤ n ≤ M
w[n] =
0, senão
sendo sua resposta em frequência:
M
1 − e − jw( M +1) − jwM / 2 sen[ w( M + 1) / 2]
W (e ) = ∑ e
jw − jwn
= = e
n =0 1 − e − jw sen( w / 2)
Pode ser provado que a largura do lóbulo central é ∆wm = 4π/(M + 1) para uma
janela retangular. O primeiro zero de W(ejw) ocorre quando:
Assim, a largura do lóbulo central é o dobro desse valor (já que envolve os
valores negativos e positivos):
2w = 4π/(M + 1)
À medida que M cresce, a largura de cada lóbulo lateral diminui, mas a área
sobre cada um permanece constante. Assim, as amplitudes relativas dos picos
laterais vão permanecer constantes e a atenuação da banda de passagem
permanece em cerca de 21 dB. Isso significa que as ondulações vão sofrer um
pico perto das bordas das bandas. Isso é conhecido como fenômeno de Gibbs
(Fig. 5.5). Esse fenômeno ocorre por causa da transição brusca de 0 para 1 (e
de 1 para 0) da janela retangular.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 123
Fig. 5.5. Fenômeno de Gibbs: Pico das ondulações nas fronteiras entre as
bandas.
2n
M , 0 ≤ n ≤ M /2
2n
w[ n] = 2 − , M /2 < n ≤ M
M
0 , senão
Essa janela e sua resposta em frequência podem ser vistas na Fig. 5.6
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 124
2
2
I 0 β 1 − 1 − n
w[n] = M
, 0≤n≤M
I 0 [β ]
0,
senão
I0(.) é a função de Bessel modificada de ordem zero:
2
∞
( x / 2) n
I 0 ( x) = 1 + ∑
n=1 n!
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 127
A−8
M=
2,285∆w
O procedimento para projetar um filtro passa-baixa digital FIR usando a janela
de Kaiser consiste nos seguintes passos:
i) Estabelecer as especificações wP, wS e δ.
ii) Estabelecer a frequência de corte wc do filtro passa-baixa ideal ao qual se
aplicará a janela (wc = (wP + wS)/2).
iii) Calcular A = 20log10 δ e ∆w = wP - wS e usar as fórmulas de Kaiser para
encontrar os valores de M e β.
iv) Encontra a resposta ao impulso do filtro através de h[n]=hd[n]w[n], onde w[n]
é a janela de Kaiser e hd[n] = ℑ-1[Hd(ejw)].
A resposta ao impulso é:
sen[ wc ( n − M / 2)]
h[ n] = hd [n]w[n] = w[n]
π (n − M / 2)
com w[n] dado pela definição da janela de Kaiser.
Implementações no MatLab
O MatLab tem diversas funções para implementar janelas:
1. w = rectwin(M): Janela retangular
2. w = bartlett(M): Janela de Bartlett
3. w = hanning(M): Janela de Hanning
4. w = hamming(M): Janela de Hamming
5. w = blackman(M): Janela de Blackman
6. w = kaiser(M, beta): Janela de Kaiser
Função 2:
function [db, mag, pha, w] = freqz_m(b, a)
% Versao modificada da funcao freqz
[H, w] = freqz(b, a, 1000, 'whole');
H = (H(1:501))';
w = (w(1:501))';
mag = abs(H);
db = 20*log10((mag + eps)/(max(mag)));
pha = angle(H);
Exemplo 1:
Projetar um filtro passa-baixa FIR com as seguintes especificações wP = 0,2π,
RP = 0,25 dB, wS = 0,3π e AS = 50 dB.
Tanto a janela de Hamming quanto a de Blackman provêem atenuação de mais
de 50 dB. Vamos escolher a janela de Hamming que provê a menor banda de
transição e assim tem a menor ordem.
wp = 0.2*pi; ws = 0.3*pi;
tr_width = ws - wp;
M = ceil(6.6*pi/tr_width) + 1
n = [0:M-1];
wc = (ws + wp)/2;
hd = ideal_lp (wc, M);
w_ham = (hamming(M))';
h = hd.*w_ham;
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
Rp = -(min(db(1:wp/delta_w+1)))
As = -round(max(db(ws/delta_w+1:501)))
subplot(1, 1, 1)
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]');
subplot (2, 2, 2); stem(n, w_ham); title('Janela de Hamming');
axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 131
M = 67
alpha = 33
Rp = 0,0394
As = 52
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 132
Exemplo 2:
Resolva o exemplo anterior usando uma janela de Kaiser.
wp = 0.2*pi; ws = 0.3*pi; As = 50;
tr_width = ws - wp;
M = ceil((As - 7.95)/(14.36*tr_width/(2*pi))+1) + 1
n = [0:M-1];
beta = 0.1102*(As - 8.7)
wc = (ws + wp)/2;
hd = ideal_lp (wc, M);
w_kai = (kaiser(M, beta))';
h = hd.*w_kai;
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
As = -round(max(db(ws/delta_w+1:501)))
subplot(1, 1, 1)
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]');
subplot (2, 2, 2); stem(n, w_kai); title('Janela de Kaiser');
axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');
subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');
subplot (2, 2, 4); plot(w/pi, db); title('Magnitude em dB');grid
axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');
M = 61
beta = 4,5513
alpha = 30
As = 52
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 133
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 134
Exemplo 3:
Vamos projetar o filtro com as seguintes especificações (conforme a figura
abaixo):
Borda da banda de corte mais baixa: w1s = 0,2π, As = 60 dB
Borda da banda de passagem mais baixa: w1p = 0,35π, As = 1 dB
Borda da banda de corte mais alta: w2s = 0,65π, As = 1 dB
Borda da banda de passagem mais alta: w2p = 0,8π, As = 60 dB
Existem duas bandas de transição: ∆w1 = w1P – w1S, ∆w2 = w2S – w2P. Essas
duas larguras de banda devem ser a mesma no projeto da janela; i.e., não há
controle independente sobre ∆w1 e ∆w2. Assim ∆w1 = ∆w2 = ∆w1. Para esse
projeto, podemos usar a janela de Kaiser ou a de Blackman. Vamos escolher a
janela de Blackman. Vamos precisar também da resposta ideal ao impulso de
um filtro passa-faixa hd[n]. Observe que essa resposta ao impulso pode ser
obtida a partir de duas respostas em magnitude de filtros passa-baixa ideais,
considerando que elas tenham a mesma resposta em fase. Isso pode ser visto
na figura a seguir:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 135
M= 75
alpha = 37
Rp = 0,0030
As = 75
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 137
Exemplo 4:
A resposta em frequência de um filtro passa-faixa ideal é dada por:
1 , 0 ≤| w |< π / 3
H e (e jw ) = 0 , π / 3 ≤| w |≤ 2π / 3
1 , 2π / 3 <| w |≤ π
Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45
com atenuação na banda de corte de 60 dB.
Observe que a largura da banda de transição não foi dada. Ela será encontrada
a partir do comprimento M = 45 e do parâmetro β da janela de Kaiser. Das
equações de projeto da janela de Kaiser, podemos determinar β a partir de As:
β = 0,1102( AS − 8,7)
Vamos agora implementar a janela de Kaiser e observar a atenuação na banda
de corte.
M = 45; As = 60; n=[0:M-1];
beta = 0.1102*(As - 8.7)
w_kai = (kaiser(M, beta))';
wc1 = pi/3; wc2 = 2*pi/3;
hd = ideal_lp(wc1, M) + ideal_lp(pi, M) - ideal_lp(wc2, M);
h = hd.*w_kai;
[db, mag, pha, w] = freqz_m(h, [1]);
subplot (1, 1, 1);
subplot (2, 2, 1);
stem(n,hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.2 0.8]); xlabel('n'); ylabel ('hd[n]');
subplot (2, 2, 2); stem (n, w_kai); title ('Janela de Kaiser');
axis ([0 M-1 0 1.1]); xlabel('n'); ylabel('w[n]');
subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.2 0.8]);xlabel('n');ylabel('h[n]');
subplot (2, 2, 4); plot(w/pi, db); title('Magnitude em dB');grid
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 138
beta = 5,6533
Observe que, com esse valor, a mínima atenuação da banda de corte é menor
que 60 dB (observe que há lóbulos na banda de corte com pico acima de 60 na
escala negativa - ou seja, é menor que 60 em módulo – resposta em magnitude
na figura acima, destacada em vermelho). Assim, precisamos aumentar BETA
para aumentar a atenuação para 60 dB. Vamos colocar um acréscimo no valor
calculado de BETA para conseguir uma atenuação maior. Observamos que,
assim, a atenuação fica maior que 60 dB na banda de corte.
beta = 5,9533
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 140
Exemplo 5:
A resposta em frequência de um filtro diferenciador digital ideal é dada por:
jw , 0 < w ≤ π
H d (e jw ) =
− jw , − π < w < 0
Usando uma janela de Hamming de comprimento 21, projete um diferenciador
FIR. Plote as respostas no domínio do tempo e da frequência.
0 π
1 1
∫π (− jw)e dw + ∫ ( jw)e − jαw e jwn dw
− jαw
= e jwn
2π −
2π 0
cos π (n − α )
, n≠α
= (n − α )
0 , n =α
A resposta ao impulso acima pode ser implementada no MatLab através da
janela de Hamming para projetar o diferenciador requisitado. Note que se M é
um número par, então α = (M - 1)/2 não é um inteiro e hd[n] será zero para todo
n. Assim, M deve ser um número ímpar e teremos um filtro FIR de fase linear do
tipo III.
Para projetar um filtro FIR de fase linear (de qualquer tipo) usamos o código
abaixo:
function [Hr, w, coef, L] = Hr_Type(h, type)
% Calcula a resposta em ampiltude Hr[w] para filtros FIR tipo I, II, III e IV
% type = tipo de filtro
M = length(h);
if ((type == 1) | (type == 2))
L = (M - mod(type, 2))/2;
if (type == 1)
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 141
Exemplo 6:
Projete um filtro transformador digital de Hilbert de comprimento 25 usando uma
janela de Hanning. A resposta em frequência ideal de um transformador de
Hilbert de fase linear é dada por:
je , −π < w < 0
2 sen 2 [π (n − α ) / 2]
, n ≠α
hd [ n] = π (n − α )
0 , n =α
que pode ser implementado no MatLab. Como M = 25, o projeto do filtro é do
tipo III:
M = 25; alpha = (M - 1)/2; n = 0:M-1;
hd = (2/pi)*((sin((pi/2)*(n - alpha)).^2)./(n - alpha));
hd (alpha + 1) = 0;
w_han = (hanning(M))';
h = hd.*w_han;
[Hr, w, P, L] = Hr_Type(h, 3);
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('hd[n]');
subplot (2, 2, 2); stem(n, w_han); title('Janela de Hamming');
axis([0 M-1 0 1.2]);xlabel('n');ylabel('w[n]');
subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');
axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('h[n]');
w = w'; Hr = Hr';
w = [-fliplr(w), w(2:501)]; Hr = [-fliplr(Hr), Hr(2:501)];
subplot (2, 2, 4); plot(w/pi, Hr); title('Resposta em Amplitude');grid
axis([-1 1 -1.1 1.1]);xlabel('frequencia em pi unidades');ylabel('Hr');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 144
1 − e − jwM M −1
H [k ]
H (e ) =
jw
M
∑
k =0 1 − e
− jw j 2πk / M
e (Eq. 5.2)
com
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 145
H [0] , k =0
H [k ] = H (e j 2πk / M ) =
H *[ M − k ] , k = 1,..., M − 1
Para um filtro FIR de fase linear temos:
onde o sinal positivo indica filtros FIR de fase linear dos tipos1 e 2 e o negativo é
para filtros FIR de fase linear dos tipos 3 e 4. Então H[k] é dado por:
2πk j∠H [ k ]
H [k ] = H r e
M
onde
H r [0] , k =0
2πk
Hr = H 2π ( M − k ) , k = 1,..., M − 1
M r
M
e
M − 1 2πk M − 1
− , k = 0,..., 2
∠H [k ] = 2 M
+ M − 1 2π ( M − k ) , k = M − 1 + 1,..., M − 1
2 M 2
(para tipos 1 e 2)
ou
π M − 1 2πk M − 1
± − , k = 0,...,
2 2 M 2
∠H [ k ] =
− ± π + M − 1 2π ( M − k ) , k = M − 1 + 1,..., M − 1
2 2 M 2
(para tipos 3 e 4)
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 146
Exemplo:
Vamos projetar um filtro passa-baixa usando o algoritmo de Parks-McClellan. Os
parâmetros de projeto são:
wP = 0,2π, RP = 0,25 dB
wS = 0,3π, AS = 50 dB
M = M + 1;
h = remez(M - 1, f, m, weights);
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
wsi = ws/delta_w + 1;
Asd = -max(db(wsi:501))
end
subplot (2, 1, 1); stem(h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');
subplot (2, 1, 2); plot(w/pi, db); title('Magnitude em dB');grid
axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');
M= 43 Asd = 48.8689
Asd = 47.8404 M= 46
M= 44 Asd = 49.8241
Asd = 48.2131 M= 47
M= 45 Asd = 51.0857
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 149
2)
1
≤| H a ( jΩ) |2 ≤ 1 , |Ω| ≤ ΩP
1+ ε 2
1
0 ≤| H a ( jΩ) |2 ≤ , ΩS ≤ |Ω|
A2
onde ε é o parâmetro de ondulação da banda de passagem, ΩP é a frequência
de corte da banda de passagem em rad/seg, A é o parâmetro de atenuação da
banda de corte e ΩS é a frequência da banda de corte (Fig. 5.10).
1
| H a ( jΩ ) | 2 = em Ω = ΩP
1+ ε 2
1
| Ha ( jΩ) | = 2
2
em Ω = ΩS
A
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 151
1
RP = −10 log10 ⇒ ε = 10 RP / 10
−1 (Eq. 5.3)
1+ ε 2
1
AS = −10 log10 ⇒ A = 10 AS / 20
(Eq. 5.4)
A2
As tolerâncias δ1 e δ2 da escala absoluta são relacionados a ε e A por:
1 − δ1 1 2 δ1
= ⇒ ε =
1 + δ1 1+ ε 2 1 − δ1
e
δ2 1 1 + δ1
= ⇒ A=
1 + δ1 A δ2
Especificações de filtros analógicos não têm informação de fase. Para calcular a
função de sistema Ha(s) no domínio-s considere:
H a ( jΩ ) = H a ( s ) Ω = s / j
então temos
| H a ( jΩ ) |2 = H a ( jΩ ).H a * ( jΩ ) = H a ( jΩ ).H a (− jΩ ) = H a ( s ) H a ( − s ) s = jΩ
ou
H a ( s ).H a ( − s ) = | H a ( jΩ) |2
Ω=s / j
Observação:
O domínio-s ou plano-s é o nome do plano complexo no qual a transformada de
Laplace é apresentada graficamente. A transformada de Laplace se relaciona
com a transformada de Fourier, mas enquanto a transformada de Fourier
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 152
1
| H a ( jΩ ) | 2 = 2N
Ω
1 +
Ωc
onde N é a ordem do filtro e Ωc é a frequência de corte. A plotagem de Ha(jΩ) é
mostrada na Fig. 5.12.
1 ( jΩ) 2 N
H a ( s ) H a (− s ) = | H a ( jΩ) | 2
= = 2N
Ω =s / j
s
2N
s + ( jΩ c ) 2 N
1 +
jΩ c
Para projetar o filtro, precisamos encontrar as raízes e pólos da função do
sistema. Os pólos são dados por pk = ejπ(2k + 1)/2N
.ejπ/2Ωc, k = 0, 1, 2,..., 2N-1.
Assim, os pólos estão em um círculo de raio Ωc nos ângulos θk = (π/N)k + (π/2N)
+ π/2, k = 0, ..., 2N – 1. E os zeros são sk = (-1)1/2N.j Ωc = Ωcejπ(2k+N+1)/2N, k = 0, 1,
..., 2N – 1.
1
− 10 log10 = RP
1 + (Ω P / Ω c )
2N
e
1
− 10 log10 = AS
1 + (Ω S / Ω c )
2N
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 155
ΩP
ΩC =
2N
10 RP / 10 − 1
ou para satisfazer exatamente as especificações em ΩS:
ΩS
ΩC = 2N
10 AS / 10 − 1
Solução:
0,2π
ΩC = = 0,4985
2.3
10 0, 7
−1
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 156
0,3π
ΩC = = 0,5122
2.3
10 − 1
1, 6
Podemos escolher Ωc entre esses dois valores, por exemplo Ωc = 0,5. Temos
que projetar um filtro Butterworth com N = 3 e Ωc = 0,5. Ou seja:
1
| H a ( jΩ) |2 = 6
Ω
1+
0,5
Como Ω = s/j, temos:
1 1 1
| H a ( s ) |2 = = =
S
6
1 − 26 s 6 1 − 64s 6
1 +
0,5 j
cujos pólos podem ser calculados no MatLab (ou calculando pK, como antes):
>> a = [-64 0 0 0 0 0 1];
>> b = roots(a)
b=
-0.5000
-0.2500 + 0.4330i
-0.2500 - 0.4330i
0.5000
0.2500 + 0.4330i
0.2500 - 0.4330i
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 157
1
H a ( s) =
( s + 0,5)( s + 0,25 + j 0,433)( s + 0,25 − j 0,433)
1
H a (s) =
( s + 0,5)( s 2 + 0,5s + 0,25)
Vamos ajustar o numerador para que o ganho na frequência zero seja unitário.
Ou seja, no denominador, quando s = 0, temos:
1/ 8 0,125
H a ( s) = =
( s + 0,5)( s 2 + 0,5s + 0,25) ( s + 0,5)( s 2 + 0,5s + 0,25)
2 1 − z −1 1 + sT / 2
s= ⇒ z = (Eq. 5.5)
T 1 + z −1 1 − sT / 2
onde T é um parâmetro. Historicamente, o valor de T foi incluído porque a
equação de diferenças correspondendo a H(z) pode ser obtida aplicando a regra
da integração trapezoidal na equação de diferenças de H(s), com T
representando o passo de integração. Dada a invariância ao impulso, o
parâmetro T não tem consequência no projeto já que, no mapeamento de
analógico para discreto, o efeito de T é cancelado. Logo, T pode ser escolhido
de forma conveniente para cada problema. No nosso caso, seja T = 1:
1 − z −1
s=2 −1
⇒ H a ( z ) = H a ( s) s=21− z −1 =
1+ z 1+ z −1
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 158
0,125
H a ( z) =
1 − z −1
2
1 − z −1 1 − z −1
2 1 + z −1 + 0,5 2 1 + z −1 + 0,5 2 1 + z −1 + 0,25
b
H ( s) = (Eq. 5.6)
s+a
Esse sistema pode ser caracterizado também pela equação de diferenças:
dy (t )
+ a. y (t ) = b.x(t )
dt
Ao invés de substituir uma diferença finita pela derivada, suponha que
integramos a derivada e aproximamos a integral pela fórmula trapezoidal. Assim:
t
y (t ) = ∫ y ' (τ ) dτ + y (t0 )
t0
T
y (nt ) = [y ' (nT ) + y ' (nT − T )] + y (nT − T ) (Eq. 5.7)
2
Agora, essa equação diferencial calculada em t = nT leva a:
aT aT bT
1 + y ( n ) − 1 − y ( n − 1) = (x(n) + x(n − 1) )
2 2 2
cuja transformada Z é
aT aT −1
1 + Y ( z ) − 1 − z Y ( z ) =
bT
1 + z −1 X ( z ) ( )
2 2 2
Consequentemente, a função de transferência do filtro digital equivalente é:
Y ( z) (bT / 2)(1 + z −1 )
H ( z) = =
X ( z ) 1 + aT / 2 − (1 − aT / 2) z −1
ou, equivalentemente:
b
H ( z) =
2 1 − z −1 (Eq. 5.9)
+a
−1
T 1+ z
Notadamente, comparando a Eq. 5.9 com a Eq. 5.6, ou seja, mapeando o plano
s com o plano z, temos:
2 1 − z −1
s =
−1
T 1+ z
que é a chamada transformação bilinear.
1
| H a ( jΩ ) | 2 =
Ω
1 + ε 2TN2
Ωc
onde N é a ordem do filtro, ε é o fator de ondulação da banda de passagem (Eq.
5.3) e TN(x) é o polinômio de Chebyshev dado por:
1
| H a ( jΩ ) | 2 = −1
Ω
1 + ε 2TN2 c
Ω
Ou seja, x = (Ω/Ωc) é substituído por seu inverso e ε2TN2(x) também.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 161
Fig. 5.13. Dois filtros com as mesmas especificações gerados como Butterworth
e Chebyshev tipo I: o de Chebyshev tem menor ordem.
1
| H a ( jΩ) |2 =
Ω
1 + ε 2U N2
Ω
c
onde N é a ordem do filtro, ε é o fator de ondulação da banda de passagem (Eq.
5.3) e UN(x) é a função elíptica Jacobiana de ordem N.
2
K (k ) K ( 1 − k1 )
N=
K (k1 ) K ( 1 − k 2 )
onde
π /2
Ω ε 1
k= P
ΩS ,
k=
A −1
2 e
K ( x) = ∫
0 1 − x sen θ
2 2
dθ
H ( z ) = H PB ( Z ) Z −1 =G ( z −1 )
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 163
e − jθ = G (e − jw )
e− jθ =| G(e − jw ) | e j∠G (e
jw
)
De forma que:
|G(e-jw)| = 1
e
-θ= ∠G(e-jw)
A forma mais geral da função G(z-1) que satisfaz às condições acima é:
N
z −1 − α k
Z −1
= G ( z ) = ±∏
−1
k =1 1 − α k z
−1
−1 −1 z −1 − α
Z = G( z ) =
1 − αz −1
Agora, escolhendo uma ordem apropriada N e os coeficientes {αk}, podemos
obter uma variedade de mapeamentos. As transformações mais comuns estão
na Tabela 5.1.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 164
M
≅3
N
Isso mostra que, para a maior parte das aplicações, filtros IIR elípticos são
desejáveis do ponto de vista computacional. As condições mais favoráveis para
filtros FIR são:
1. Grandes valores de δ1;
2. Pequenos valores de δ2;
3. Grande largura da banda de transição.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 165
5.5 Exercícios
0 , 0 ≤| w |< π / 3
H e (e jw ) = 1 , π / 3 ≤| w |≤ 2π / 3
0 , 2π / 3 <| w |≤ π
Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45
com atenuação na banda de corte de 60 dB. Plote a resposta ao impulso e a
resposta em magnitude do filtro. Modifique o que for necessário do filtro para
que as especificações sejam completamente atendidas.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 167
4. Tamal Bose, Digital Signal and Image Processing, John Wiley and Sons,
2004.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 168
∫ f (t )e
− j 2πwt
F ( w) ≡ ℑ{ f (t )} = dt
−∞
N −1 2π
1 j kn
x[n] =
N
∑ X [k ]e
k =0
N
, n = 0, ±1, .... (Eq. 6.1)
N −1 2π
−j kn
X [k ] = ∑ x[n]e N
, k = 0, ±1, .... (Eq.
n =0
6.2)
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 170
Equação de análise:
X [k ] = ∑ x[n]WNkn
n =0
N −1
1
Equação de síntese:
x[n] =
N
∑ X [k ]W
k =0
− kn
N
Exemplo:
Encontre a representação em série de Fourier da sequência:
3 3
X [0] = ∑ x[n]W 4
0.n
= ∑ x[ n] = x[0] + x[1] + x[2] + x[3] = 6
n=0 n=0
De forma similar:
3 3
X [1] = ∑ x[n]W 1.n
4 = ∑ x[n](− j ) n = −2 + 2 j
n=0 n=0
3 3
X [ 2] = ∑ x[n]W 4
2.n
= ∑ x[n](− j ) 2 n = −2
n =0 n=0
3 3
X [3] = ∑ x[n]W 4
3.n
= ∑ x[n](− j )3n = −2 − 2 j
n=0 n=0
Uma outra forma de ver a transformada discreta de Fourier é através de uma
representação em matrizes. Considere que x e X são vetores coluna
correspondendo aos períodos primários das sequências x[n] e X[k],
respectivamente. Então as equações de síntese e análise podem ser vistas
como:
X = W Nx
e
x = (1/N)W *NX
onde W N é dada por:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 172
Por exemplo:
>> xn = [0 1 2 3]; N = 4;
>> Xk = dfs(xn, N)
Xk =6 -2 + 2i -2 - 0i -2 - 2i
Exatamente como calculamos anteriormente. A transformada inversa pode ser
obtida como:
Exemplo:
Considere uma sequência representando uma onda quadrada periódica:
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 173
No MatLab:
>> L = 5; N = 20; k = [-N/2:N/2];
>> xn = [ones(1, L), zeros(1, N-L)];
>> Xk = dfs(xn, N);
>> magXk = abs([Xk(N/2+1:N) Xk(1:N/2+1)]); % DFS magnitude
>> stem(k, magXk); axis([-N/2, N/2, -0.5, 5.5]);xlabel('k'); ylabel('X[k]');
Primeiro, definimos a squência de duração finita x[n] que tem N amostras sobre
0 ≤ n ≤ N – 1 como uma sequência de N-pontos. Seja ~ x [n] um sinal periódico de
período N, criado usando uma sequência de N-pontos x[n]; isto é:
∞
~
x [ n] = ∑ x[n − rN ]
r = −∞
Note que X[k] também é uma sequência de N-pontos, ou seja, ela não é definida
fora do intervalo de 0 ≤ k ≤ N – 1.
x[n] = IDFT ( X [k ])
ou
N −1
1
x[n] =
N
∑ X [
k =0
k ]W −kn
N , 0≤n≤N–1
Do início desse capítulo, fica claro que a DFS é praticamente equivalente à DFT
quando 0 ≤ n ≤ N – 1. Assim a implementação da DFT pode ser feita de forma
similar. Se x[n] e X[k] são organizados como vetores coluna x e X,
respectivamente, então temos:
X = W Nx
e
x = (1/N)W *NX
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 176
2πmn
N −1
2πmn
X [ m] = ∑ x[n]cos − jsen
n =0 N N
lembrando que j = √−1. Este é um conceito abstrato conveniente para nos ajudar
a comparar a relação de fase entre várias componentes senoidais do sinal.
1) Linearidade
Dadas duas sequências periódicas com período N, x1[n] e x2[n], e suas
respectivas DFTs X1[k] e X2[k], então:
a.x1[n] + b.x2[n] ↔ a.X1[k] + b.X2[k]
Obs: Se x1[n] e x2[n] são sequências de durações diferentes (N1-pontos e N2-
pontos, por exemplo), escolha N3 = max(N1, N2). Se, por exemplo, N1 < N2, então
X1[k] é a DFT de x1[n] aumentada de (N2 – N1) zeros.
x[n – m] ↔ W NkmX[m]
3) Dualidade
Se x[n] ↔ X[k]
então X[n] ↔ N.x[-k]
4) Simetria
A simetria pode poupar muito esforço computacional. Quando a sequência do
sinal for real, então X[N − m]* = X[m]. Ou seja, basta que calculemos as
componentes de X[m] para 0 ≤ m ≤ N/2 .
Prova:
N −1 2π
−j kn
X [ k ] = ∑ x[ n]e N
n=0
Logo
2π * 2π 2π *
N −1 − j n ( N −m ) N −1 − j nN j nm
X [ N − m] = ∑ x[ n]e
* N
= ∑ x[ n]e N
e N
n= 0 n= 0
2π *
N −1 j nm
X [ N − m] = ∑ x[ n]e
* − j 2πn
e N
n =0
onde e-j2πk = cos(2πn) - jsen(2πn) = 1 – j.0 = 1. Assim:
2π *
N −1 j nm
X [ N − m] = ∑ x[n]e N
*
n= 0
Se x[n] for real:
N −1 2π
−j nm
X [ N − m] = ∑ x[n]e
* N
= X [ m]
n =0
5) Convolução Periódica
N −1
∑ x [ m ] x [ n − m] ↔ X [ k ] X
m =0
1 2 1 2 [k ]
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 178
Exemplo:
>> n = 0:99;
>> fs = 200;
>> Ts=1/fs;
>>x=cos(2*pi*20*n*Ts + pi/4) + 3*cos(2*pi*40*n*Ts - 2*pi/5) + 2*cos(2*pi*60*n*Ts
+ pi/8);
>> X = fft(x);
>> m = 0:length(X) - 1;
>> subplot(3, 1, 1); stem(x); xlabel('n');ylabel('x(n)');title('Sequencia');
>> subplot(3, 1, 2); stem(m*fs/length(X), abs(X), 'b'); ylabel('magnitude');
>> xlabel('frequencia (Hz)'); title('Magnitude da Resposta em Frequencia');
>> subplot(3,1,3); stem(m*fs/length(X), angle(X), 'b'); ylabel('Angulo');
>> xlabel('frequencia (Hz)'); title('Fase');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 179
Pode ser vista como uma figura tridimensional, cuja visão em perspectiva seria
como na figura:
6.5 O Espectrograma
O espectrograma apresenta a densidade espectral do sinal ao longo do tempo.
Em processamento de voz, o espectrograma é usado para identificar fonemas
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 182
Exemplo:
Considere o sinal de voz abaixo. Nele está sendo dito: “jessica brown”. O som foi
gerado por uma voz feminina, com ruído de fundo. Arquivo phrase59_16k.wav,
da pasta Enroll_Session1 -> f16 -> female_list_4a (base TIMIT do MIT). Em
seguida, apresentamos seu espectrograma. No padrão de cores do MatLab, as
cores vermelha e amarela correspondem a picos (o que indica alta densidade da
frequência), enquanto os tons azuis correspondem a valores baixos. Há um
ruído no início da gravação.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 183
A função usada para gerar esse espectrograma pode ser vista abaixo:
% read the signal
[y,fs]=wavread('phrase59_16k.wav');
% calculate the table of amplitudes
[B,f,t]=specgram(y,1024,fs,256,192);
% calculate amplitude 50dB down from maximum
bmin=max(max(abs(B)))/300;
% plot top 50dB as image
imagesc(t,f,20*log10(max(abs(B),bmin)/bmin));
% label plot
axis xy; xlabel('Time (s)'); ylabel('Frequency (Hz)');
colormap(jet);
(fonte: http://www.phon.ucl.ac.uk/courses/spsci/matlab/lect9.html)
As figuras a seguir mostram as mesmas palavras ditas pela mesma mulher, mas
com outro tipo de microfone. Observe as diferenças mais visíveis no
espectrograma.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 184
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 185
6.6 Exercícios
ne−0,3n , 0 ≤ n ≤ 25
x1[n] =
0, 26 ≤ n ≤ 49
e seja x2[n] periódica com período fundamental N = 100, onde um período é
dado por:
ne−0,3n , 0 ≤ n ≤ 25
x21[n] =
0, 26 ≤ n ≤ 99
a) Encontre DFT{x1[n]} e plote (usando a função stem) os gráficos de sua
magnitude e de sua fase.
b) Encontre DFT{x2[n]} e plote (usando a função stem) os gráficos de sua
magnitude e de sua fase.
c) Qual a diferença entre as duas plotagens?
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 186
4. Nas questões abaixo, para cada função, plote a magnitude e a fase de sua
DFT (crie as funções no MatLab):
a) Dente de serra:
b) Onda quadrada
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 187
é definido por:
e = (ac – bd)
f = (ad + bc)
e = (a – b)d + a(c – d)
f = (a – b)d + b(c + d)
X (k ) = ∑
n _ par
x[n]WNnk + ∑ x[n]W
n _ ímpar
nk
N
N / 2−1 N / 2−1
X (k ) = ∑ x[2r ]W
r =0
N
2 rk
+ ∑ x[2r + 1]W
r =0
( 2 r +1) k
N (Eq. 7.2)
N / 2−1 N / 2 −1
X (k ) = ∑ x[2r ](W
r =0
N ) +W
2 rk k
N ∑ x[2r + 1](W
r =0
2 rk
N) (Eq. 7.3)
N / 2−1 N / 2−1
X (k ) = ∑ x[2r ]W
r =0
rk
N/2 +W k
N ∑ x[2r + 1]W
r =0
rk
N /2
Cada parcela na Eq. 7.4 é reconhecida como uma DFT de N/2 pontos, sendo a
primeira parcela uma DFT de N/2 pontos dos pontos de índice par da sequência
original e o segundo termos uma DFT de N/2 pontos dos pontos de índice ímpar
da sequência original. A Fig. 7.1 apresenta um diagrama de fluxo do cálculo de
uma DFT de 8 pontos.
Na Fig. 7.1 duas DFTs de 4 pontos são calculadas, com G[k] designando a DFT
de 4 pontos dos termos de índice par e H[k] designando a DFT de 4 pontos dos
termos de índice ímpar. Na saída, X[0] é obtido multiplicando H[0] por W N0 e
somando o produto com G[0]. X[1] é obtido multiplicando H[1] por W N1 e
somando o resultado com G[1]. Para calcular X[4] deveríamos multiplicar H[4]
por W N4 e somar o resultado com G[4]. Contudo, como G[k] e H[k] são
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 193
periódicas em k com período 4 (nesse caso), H[4] = H[0] e G[4] = G[0]. Assim,
H[4] é obtido multiplicando h[0] por W N4 e somando o resultado com G[0]. Os
outros valores são obtidos de forma similar.
N / 4 −1 N / 4−1
G[ k ] = ∑ g[2l ]W
l =0
lk
N /4 +W k
N /2 ∑ g[2l + 1]W
l =0
lk
N/4 (Eq. 7.5)
N / 4−1 N / 4 −1
H [k ] = ∑ h[2l ]W
l =0
lk
N /4 +W k
N/2 ∑ h[2l + 1]W
l =0
lk
N /4 (Eq. 7.6)
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 194
Fig. 7.2. Gráfico de fluxo da decimação em tempo de uma DFT de N/2 pontos
em duas DFTs de N/4 pontos (para N = 8).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 195
Para a DFT de 8 pontos que estamos usando como exemplo, a computação foi
reduzida a DFTs de 2 pontos. A DFT de 2 pontos para, por exemplo, x[0] e x[4] é
detalhada na Fig. 7.4.
W Nr+N/2 = W NN/2.W Nr = -W Nr
Com isso em mente, o cálculo da butterfly da Fig. 7.5 pode ser simplificado para
a forma da Fig. 7.6 que requer apenas uma multiplicação complexa ao invés de
duas.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 197
X0[6] = x[3]
X0[7] = x[7]
(Eqs. 7.7)
que podem ser re-escritas como:
(Eqs. 7.8)
Pelas equações 7.8 e pela Fig. 7.3, está claro que apenas o passo m-1 é
necessário estar armazenado para poder calcular os valores do array no passo
m. Esse tipo de computação é chamado de computação in-place.
7.4 Exercícios
N
π ( 2n − 1)( k − 1)
y ( k ) = w( k ) ∑ x( n ) cos , k = 1, ...., N
n =1 2N
Onde:
1
k =1
w( k ) = k
2
2≤k ≤ N
N
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 204
8. Análise Wavelet
Em 1807, Joseph Fourier propôs sua análise de frequência em sinais. Através
dessa análise, um sinal no domínio do tempo poderia ser convertido para o
domínio da frequência e vice-versa. Dessa forma, características do sinal podem
ser observadas de uma maneira mais apropriadas.
Uma solução para esse problema foi sugerida por Gabor em 1946. Ao invés da
transformada de Fourier ser aplicada a todo o sinal, ela atuaria apenas em
partes dele. O sinal passaria a ser visto em janelas e a transformada seria
calculada em cada janela. A esse processo chamou-se de Transformada de
Fourier de Tempo Curto (Short-Time Fourier Transform). O sinal passa a ser
considerado apenas na porção que está sob a janela, sendo todo o restante
desconsiderado nesse momento. Dentro da janela, considera-se que o sinal tem
comportamento estacionário (Fig. 8.3).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 207
uma janela pequena pode trazer pouca informação sobre o sinal e exige muito
processamento. Já uma janela grande pode aumentar o erro na consideração de
estacionaridade do sinal.
(Eq. 8.3)
Nessa equação, s atua como fator de escala e τ atua como fator de translação
(deslocamento) da janela; ψ é uma função conhecida como a wavelet mãe. Essa
função é aplicada sobre a função em análise (x(t)), em janelas (cuja posição é
definida pelo deslocamento τ) e com dimensões diferentes (definidas pelo fator
de escala s). Variações nessa função criam as chamadas famílias de wavelets.
A primeira família de wavelets é a Haar criada na tese de Alfred Haar ainda em
1909 sem o propósito atual das Wavelets.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 209
A Eq. 8.3 pode ser vista como uma forma geral da transformada que pode variar,
dependendo da função assumida por ψ. Dessa forma, podemos entender a
transformada de Fourier como um caso particular da transformada Wavelet com
a wavelet mãe sendo a função exponencial. Existem condições que definem
uma função como passível de ser wavelet, como veremos posteriormente.
Há algumas propriedades que devem ser obedecidas para que uma função
possa ser chamada de wavelet. Neste contexto, wavelets devem satisfazer
requisitos como:
• possuírem energia finita;
• possuírem certo grau de regularidade (suavidade);
• serem nulas no infinito;
• possuírem um certo número de momentos nulos;
• que sejam funções de classe Ck (0<k<∞);
• que tenham suporte compacto, no tempo e na frequência.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 211
a) b)
c)
Fig. 8.8. Análise de wavelet no contínuo: a) correlação entre a função e a
wavelet mãe; b) novo cálculo com a função deslocada; c) re-início do
processamento com uma nova escala aplicada à wavelet mãe.
ψ j , k (t ) = 2 j / 2ψ (2 j t − k )
A wavelet acima é conhecida por wavelet diádica.
Todo esse processo pode ser repetido em cascata, tratando, como sugerido,
apenas os componentes de baixa frequência do sinal (os mais importantes). Isso
pode ser visto na Fig. 8.11. A isso se chama análise em multiresolução.
a) b)
Fig. 8.10. a) Processamento sem uso de downsampling e b) com uso
(representado pelo bloco com a seta para baixo).
Fig. 8.12. Uso do upsampling (bloco com seta para cima) para reconstrução do
sinal.
8.3 Sobre os coeficientes das wavelets
Existem diversos tipos de wavelets como a Haar, Daubechies, Coiflets,
Shannon, etc.
Análise Síntese
Vamos considerar o filter bank da Fig. 8.14 e vamos ver como se comportam
w[n] e z[n].
Algumas vezes, um two channel filter bank é chamado de quadrature mirror filter
(QMF). Um QMF é um filter banks com condições especiais nos coeficientes dos
filtros para evitar aliasing e conseguir uma reconstrução perfeita. Ou seja, sua
única diferença para filter banks é a escolha dos coeficientes dos filtros.
Seja um dos filtros da análise h0. Os outros filtros (h1, g0 e g1) são gerados a
partir de h0. Especificamente, h1 usa os mesmos coeficientes de h0, mas
negativa os coeficientes de índice par. O filtro de reconstrução g0 é igual a h0 e
g1= -h1.
O conjugate quadrature filter (CQF) especifica que h1 deve ser o reverso de h0
com os valores em índices de ordem par negativados. Para a reconstrução, g0 e
g1 são os reversos de h0 e h1, respectivamente.
h1 g1
h0 g0
Considerando que:
w[n - k] = a.x[n - k] + b.x[n – k - 1] + c.x[ n – k - 2] + d.x[n – k - 3]
z[n - k] = d.x[n - k] - c.x[n – k - 1] + b.x[ n – k - 2] - a.x[n – k -3]
Se consideramos, nessas operações, que ac = -bd, então, chegamos à
expressão final:
y[n] = 2(aa + bb + cc + dd).x[n – 3]
Novamente, precisamos ter (aa + bb + cc + dd) = 1. Os coeficientes de
Daubechies obedecem a essas duas condições:
i) (aa + bb + cc + dd) = 1
ii) ac = -bd
Exemplos:
1. Sinal de voz:
>> [som, Fz] = wavread(‘a_casa.wav’);
>> plot (som);
>> [cA1, cD1] = dwt(som, 'db1');
>> % reconstrução
>> l_s = length(som);
>> A1 = idwt(cA1,[ ],'db1',l_s);
>> D1 = idwt([ ],cD1,'db1',l_s);
>> subplot(2,1,1); plot(A1); title('Aproximacao A1');
>> subplot(2,1,2); plot(D1); title('Detalhes D1');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 222
Recuperação do sinal:
>> A0 = idwt(cA1,cD1,'db1',l_s);
>> err = max(abs(som-A0))
err = 1.1102e-016
>> plot (A0);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 223
8.5 Exercícios
1.
a) Verifique se os coeficientes
a = (1-√3)/(4√2), b = (3-√3)/(4√2), c = (3+√3)/(4√2) e d = (1+√3)/(4√2)
podem ser coeficientes de uma wavelet de Daubechies.
x[n] = {8, 4, 0, 6, 3, 7, 2, 9}
Uma imagem digital pode ser entendida como uma função f(x,y), onde x e y são
as coordenadas espaciais e a função f é o nível de cinza (ou de brilho) naquele
ponto. Quando x, y e f estão numa escala finita e discreta, dizemos que temos
uma imagem digital.
9.1 Digitalização
Um sistema de processamento digital de imagens necessita de um dispositivo
de digitalização (câmera digital, scanner, etc), um meio para processar e
armazenar a imagem (como o computador) e uma forma de visualização da
imagem. Em geral, a grande dificuldade está relacionada com a digitalização
que pode gerar imagens com grande quantidade de dados a serem
processados.
Dessa forma, uma imagem digital está completamente definida: suas dimensões
e a cor de cada pixel. Como está claro, então, uma imagem nada mais é do que
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 236
uma matriz onde cada célula tem uma cor específica. O conjunto e a disposição
dessas cores é percebida pelo sistema visual humano e interpretado pelo nosso
cérebro como uma imagem.
Fig. 9.4. Como antes (Fig. 9.3), em azul (linha contínua) temos o sinal original,
em vermelho (linha pontilhada vertical) as amostras colhidas do sinal durante a
amostragem e em pontilhado na horizontal temos a discretização das amplitudes
durante a quantização.
No início do estudo sobre cores, o fenômeno que mais chamava a atenção era a
decomposição da luz branca em todas as cores do espectro ao passar por um
prisma. Acreditava-se que o prisma tinha essa propriedade “mágica” de
decompor a luz. Foi Sir Isaac Newton, físico, matemático e astrônomo inglês, no
século XVII, que derrubou essa idéia com um experimento simples: Newton
colocou um prisma na frente de outro e a decomposição da luz branca
provocada pelo primeiro prisma incidia sobre o segundo prisma retornando luz
branca novamente (Fig. 9.5). Newton acreditava que o olho humano era
composto por infinitas células fotossensíveis, cada uma responsável pela
percepção de uma cor.
Além do sistema RGB, outros sistemas surgiram ao longo dos tempos para
aplicações específicas como o HSV, HSL, CMYK, CieLab, Pantone, etc. A
mudança de um sistema para outro pode trazer diversas vantagens dependendo
da aplicação.
No sistema RGB, o branco corresponde à cor (255, 255, 255) e o preto à cor (0,
0, 0). Por exemplo, o vermelho puro seria (255, 0, 0), o verde puro é (0, 255, 0) e
o azul é (0, 0, 255). Variações nesses valores geram as outras cores do sistema
computacional de cores.
9.3 Histograma
Em uma imagem, o histograma é um gráfico que mostra a distribuição das cores
na imagem. No eixo x, encontramos todos os valores possíveis de cada
componente de cor de uma imagem. Cada ponto desse eixo corresponde a um
contador que armazena quantas vezes aquela cor aparece na imagem.
Observamos que o histograma não diz como as cores estão distribuídas na
imagem; apenas quantas vezes cada componente aparece.
Por não conter informação sobre a distribuição das cores em uma imagem,
diferentes imagens podem ter o mesmo histograma (Fig. 9.7)
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 241
Fig. 9.7. Imagens completamente opostas, mas que têm o mesmo histograma.
A Eq. 9.2 representa a convolução de uma função f(t) por uma função g(t). Em
termos gráficos, a convolução pode ser representada como na Fig. 9.8 (onde as
funções estão representadas como retângulos apenas para facilitar o
entendimento). Uma das funções, h, é rebatida e desloca-se pelo espaço das
funções. No momento que ela começa a ter alguma interseção com a função f a
área dessa interseção é calculada (resultado da integração). Enquanto as
funções tiverem área comum ao longo do deslocamento de h, o resultado é
avaliado. A integração é feita de -∞ a +∞, mas, claro, a área só é diferente de
zero enquanto há área em comum.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 243
No caso de imagens, o pixel a ser processado de deve ser casado com o centro
da matriz do filtro (Fig. 9.10). O resultado da filtragem para esse pixel será o
somatório do produto de cada valor da máscara pelo valor da imagem sob a
máscara.
Quando o ponto w5 casar no pixel p1, suponha que os valores abaixo da matriz
do filtro tenham valores:
z1 z 2 z3
z 4 z5 z 6
z7 z8 z 9
Fig. 9.11. A imagem original (em cinza) é estendida (parte em branco) para
poder ser processada pelo filtro (em destaque no canto superior esquerdo).
1) Filtro Passa-Baixa
Teoricamente, esse filtro é gerado por uma função que tem valor 1 entre –w e w
e zero fora desse intervalo (Fig. 9.12a). O filtro Box é um exemplo de um filtro
passa baixa (Fig 9.12b). Como um filtro passa-baixa, sua função é deixar passar
as baixas frequências (frequências entre –w e w) e eliminar as altas frequências.
Na prática, esse filtro tem um comportamento como o da Fig. 9.12c, onde ele, na
verdade, não elimina completamente as altas frequências, mas as atenua.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 247
a) b) c)
Fig. 9.12. a) Forma de um filtro passa-baixa ideal, b) matriz de um filtro passa-
baixa (filtro Box) e c) forma de um filtro passa-baixa real.
a) b)
Fig. 9.13. Ilustração do efeito de um filtro passa-baixa: a) imagem original e b)
imagem resultante.
2) Filtro Passa-Alta
Esse filtro tem comportamento oposto ao passa-baixa e é gerado por uma
função que tem valor zero entre –w e w e 1 fora desse intervalo (Fig. 9.14a). O
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 248
a) b) c)
Fig. 9.14. a) Forma de um filtro passa-alta ideal, b) matriz de um filtro passa-alta
(filtro Laplaciano) e c) forma de um filtro passa-alta real.
a) b)
Fig. 9.15. Ilustração do efeito de um filtro passa-alta: a) imagem original e b)
imagem resultante.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 249
3) Filtro Passa-Faixa
Esse filtro permite a passagem de frequências dentro de um intervalo e cortam
as frequências fora dele (Fig. 9.16a). O filtro de Prewitt é um exemplo de um
filtro passa-faixa (Fig 9.16b). Como um filtro passa-faixa, sua função é deixar
passar frequências específicas da imagem. Na prática, esse filtro tem um
comportamento como o da Fig. 9.16c.
a) b) c)
Fig. 9.16. a) Forma de um filtro passa-faixa ideal, b) matriz de um filtro passa-
faixa (filtro Prewitt – detector de linhas horizontais) e c) forma de um filtro passa-
faixa real.
nx = size(F, 2);
ny = size(F, 1);
cxrange = [0:nx/2, -nx/2+1:-1];
cyrange = [0:ny/2, -ny/2+1:-1];
[cx, cy] = meshgrid(cxrange, cyrange);
fxrange = cxrange * 2*pi/nx;
fyrange = cyrange * 2*pi/ny;
[fx, fy] = meshgrid(fxrange, fyrange);
Outro algoritmo que sofreu uma variação e foi implementado para imagens é o
Lempel-Ziv. O LZ77 foi criado por Abraham Lempel e Jacob Ziv em 1977, sendo
um algoritmo de compressão dinâmico. Ou seja, ele gera a codificação à medida
que lê o arquivo de entrada. Isso é diferente de outros algoritmos clássicos de
compressão de dados como o código de Huffman que, em sua versão clássica,
primeiro lê todo o arquivo, gerando a codificação. Somente depois, outra
varredura é feita para gerar a compactação.
Em 1984, Terry Welch propôs uma modificação no LZ77 (a qual foi chamada de
LZW) que o tornou mais eficiente. Essa modificação é, por exemplo,
implementada no formato GIF (Graphic Interchange Format) para
armazenamento de imagens de até 256 cores. O LZW é inicializado com um
dicionário básico de codificação e esse dicionário vai ganhando novos códigos à
medida que o arquivo vai sendo lido. Na transmissão ou armazenamento,
apenas o dicionário básico é enviado com o arquivo. Durante a
descompactação, o mesmo dicionário é formado automaticamente.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 252
Uma forma mais nova para gerar compressão é através do uso de wavelets. A
decomposição wavelet gera um downsampling em cada nível que, por definição,
já diminui a quantidade de dados. Assim, é bastante natural que ela seja usada
como mecanismo para gerar compressão.
Uma imagem é lida no MatLab e armazenada como uma matriz do tipo uint8.
Esse tipo armazena valores inteiros de 0 a 255 (correspondendo aos tons da
imagem), mas não podem ser usados com operadores de números do tipo
double como adição, subtração, multiplicação e divisão. Para tanto, é preciso
primeiro converter a matriz imagem para o tipo double.
Para imagens armazenadas no formato true color (24 bits) não há paleta de
cores. As matrizes R, G, B são armazenadas assim na imagem. Isso é tratado
no MatLab como uma matriz 3 dimensional. Cada dimensõ contém uma matriz
mxn que corresponde à matriz de um dos tons (exatamente na ordem RGB).
Para separar cada componente, o seguinte código pode ser utilizado:
>> im = imread(‘flowers.bmp’); % imagem 24 bits
>> r = im(:, :, 1); % atribui todas as linhas e todas as colunas do primeiro plano
% de im à variável r
>> g = im(:, :, 2); % matriz do segundo plano
>> b = im(:, :, 3); % matriz do terceiro plano
Nesse caso, observe que a leitura das dimensões da imagem deve ser feita
como:
>> [lin, col, plano] = size(im);
Ou seja, um terceiro parâmetro de saída deve ser usado. Podemos criar uma
nova imagem 24 bits fazendo:
>> im2 = uint8(zeros(lin, col, 3)); % criada uma imagem só de zeros
Cada plano dessa nova imagem pode receber os planos da outra imagem, por
exemplo:
>> im2(:, :, 1) = r;
>> im2(:, :, 2) = g;
>> im2(:, :, 3) = b;
A filtragem de uma imagem pode ser conseguida com a função filter2. Observa-
se que a função devolve uma matriz de valores reais. Assim, eles precisam ser
arredondados e convertidos para uint8 para poderem ser visualizados e
armazenados como uma imagem:
>> im = imread(‘lena.bmp’);
>> h = fspecial (‘average’, 5); % cria um filtro da média (box)
>> im2 = uint8(round(filter2(h, im)));
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 255
9.7 Exercícios
1 2 3
1 0 2
2 2 0
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 257
Os códigos de bloco, por sua vez, podem ser divididos em singulares ou não-
singulares. Nos códigos não-singulares todas as palavras código são distintas.
Por exemplo:
A = 10
B = 11
Se há repetição, nas palavras código, temos um código singular. Por exemplo:
A = 10
B = 10
C = 01
Os códigos não-singulares são divididos em unicamente decodificáveis ou não
unicamente decodificáveis. Os códigos unicamente decodificáveis não geram
ambigüidades na decodificação; o mapeamento de volta ao alfabeto fonte é feito
de forma única. Já os não-unicamente decodificáveis geram ambigüidades. Por
exemplo:
A = 10
B = 11
C = 01
é um código unicamente decodificável, enquanto:
A=0
B=1
C = 01
não é. Se o receptor recebe a sequência “01”, ela pode ser decodificada em AB
ou C.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 260
M=aaabbbcecd
e ↔ 011 (3 bits)
Assim, se no arquivo original, cada símbolo ocupava 8 bits, tínhamos uma
mensagem com 80 bits. Agora, apenas 16 bits são necessários para codificar a
mensagem (sem contar o espaço necessário para armazenar a tabela de
codificação). O comprimento médio desse código é 1,6.
10.2.2 Run-length
O algoritmo de run-length é um dos mais simples. Ele é apropriado para alguns
tipos de arquivos em condições específicas. Por exemplo, imagens em preto-e-
branco com grandes quantidades de um dos tons, como uma imagem de um
documento onde a maior parte é o branco do papel. O run-length armazena,
como o nome diz, comprimentos de carreiras. Sua codificação é da forma:
<contador, símbolo>
Como dito antes, se o arquivo tem grandes repetições de um mesmo valor, essa
codificação pode se mostrar bastante eficiente. O run-length é implementado em
uma versão do formato BMP para armazenamento de imagens (o BMP_RLE).
Por exemplo, considere o dicionário base abaixo (sem nos preocuparmos com o
código que foi atribuído a cada símbolo da fonte):
X ↔ #1
Y ↔ #2
Z ↔ #3
W ↔ #4
e a seguinte mensagem M:
M = XYXZXYXW
2
Saída do compactador.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 270
• Algumas áreas do frame possuem a mesma cor que se espalha por mais de
um pixel (redundância espacial);
onde
MPEG
Na década de 80, ficou claro a necessidade de aliar imagem com tecnologia
digital. Nesse sentido, em 1988 ISO esquematizou o MPEG (Moving Picture
Experts Groups), para desenvolver padrões para o vídeo digital. Foram definidos
três itens a serem desenvolvidos:
1. Vídeo e áudio associados a uma taxa de 1.5 Mbps (mais tarde chamado de
MPEG-1);
2. Imagens em movimento e áudio associados a uma taxa de 10 Mbps (mais
tarde chamado de MPEG-2);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 276
Fig. 10.4. Leitura em zig-zag da matriz DCT para aplicação da codificação Run-
Length.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 281
O padrão MPEG usa uma variação da DCT chamada MDCT (Modified DCT):
n −1 π n n
S i = ∑ x k cos( [ 2k + 1 + ]( 2i + 1)), i = 0,1,..., − 1
k =0 2n 2 2
E a sua inversa, conhecida como IMDCT é dada por:
n / 2 −1
π n
xk = ∑ i =0
S i cos(
2n
[ 2k + 1 + ](2i + 1)), k = 0,1,..., n − 1
2
DivX
O DivX é um codec de vídeo criado pela DivX, Inc. Ele foi produzido para ser
usado em compactação de vídeo digital, deixando os vídeos com qualidade,
apesar da alta compactação, utilizada para ocupar menos espaço no Disco
rígido. Para alcançar tal compactação é necessário muito processamento, o que
pode fazer com que um computador tecnologicamente defasado demore para
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 282
Fig. 10.6. Som fricativo inaudível que pode ser confundido com um silêncio por
ter baixas amplitudes em parte dele.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 284
MP3
MP3 é uma abreviação de MPEG 1 Layer-3 (camada 3). Trata-se de um padrão
de arquivos digitais de áudio estabelecido pelo Moving Picture Experts Group
(MPEG), grupo de trabalho de especialistas de Tecnologias da Informação
vinculado ao ISO e à CEI. As camadas referem-se ao esquema de compressão
de áudio do MPEG-1. Foram projetadas em número de 3, cada uma com
finalidades e capacidades diferentes. Enquanto a camada 1, que dá menor
compressão, se destina a utilização em ambientes de áudio profissional
(estúdios, emissoras de TV, etc) onde o nível de perda de qualidade deve ser
mínimo devido à necessidade de pré-processamento, a 3 se destina ao áudio
que será usado pelo cliente final. Como se espera que esse áudio não sofrerá
novos ciclos de processamento, a compressão pode ser menos conservadora e
aproveitar melhor as características psicoacústicas do som limitando-se apenas
pela qualidade desejada para o ouvido humano.
Exemplo:
>> info = aviinfo('video1.avi')
info =
Filename: 'D:\MATLABR2008b\work\video1.avi'
FileSize: 2997760
FileModDate: '03-mai-2010 19:53:44'
NumFrames: 13
FramesPerSecond: 15
Width: 320
Height: 240
ImageType: 'truecolor'
VideoCompression: 'none'
Quality: 4.2950e+007
NumColormapEntries: 0
No caso, o 3º frame está sendo lido. Mas o arquivo de saída continua sendo um
arquivo de vídeo:
>> whos
Name Size Bytes Class Attributes
mov 1x1 230648 struct
Agora, temos um arquivo de imagem que pode ser exibido como tal:
Isso faz com que imagem seja inserida como frame i do arquivo de vídeo mov1
com mapa de cores especificado em map. Variando i criamos o arquivo de vídeo
a partir de diversas imagens.
Outros blocos podem ser colocados entre a entrada e saída para gerar
processamento do vídeo como na Fig. 10.11 (uma rotação) e na Fig. 10.12 (uma
transformação geométrica).
Esse comando grava 16000 amostras com uma taxa de amostragem de 8 kHz e
o armazena no vetor som do tipo double. O parâmetro ‘1’ indica que a gravação
é feita em apenas um canal (mono) e não em estéreo. Para tocar o som, basta
usar o comando soundsc:
ou
onde a e b são os coeficientes do filtro a ser aplicado (para filtros FIR, a = 1).
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 295
Exemplo 1:
>> som = wavread(‘a_casa.wav’);
>> plot (som);
Um gráfico em formato mais padrão pode ser obtido com as baixas frequências
centralizadas:
>> plot (abs(fftshift(som_spec)));
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 296
>> w = 240;
>> n = floor(length(som)/w);
>> for k=1:n
seg = som(1+(k - 1)*w:k*w);
segf = filter(h, 1, seg);
outsp(1+(k-1)*w:k*w) = segf;
end
>> soundsc(outsp, 22000);
>> y = chirp([0:0.001:5],0,5,500);
>> soundsc (y); % Escute o som para entende-lo!!
>> z = [y, y(length(y):-1:1), y];
>> f = abs(fft(z, 8192));
>> plot(f(1:4096));
Mas esse gráfico representa mesmo o sinal que criamos? Vamos observar
melhor o sinal quebrando ele em janelas e plotando-as como uma “queda
d’água” (waterfall) para ver como as frequências mudam pelo tempo.
cnote = sin(2*pi*523.25*(0:0.000125:0.5));
wavwrite(cnote, ‘c.wav’);
f = sin(2*pi*174.61*(0:0.000125:0.5));
g = sin(2*pi*195.99*(0:0.000125:0.5));
a = sin(2*pi*220*(0:0.000125:0.5));
b = sin(2*pi*246.94*(0:0.000125:0.5));
line1 = [a,b,c,d,e,f];
line2 = [a,b,c,d,e,f];
10.5 Exercícios
- Baixo custo;
- Permitem comunicação em canais ruidosos;
- Maior segurança de informação (permite inclusão de elementos de
criptografia).
Para redução de ruído, por exemplo, a filtragem digital do sinal usando filtros FIR
ou IIR pode trazer bons resultados. Vejamos o exemplo a seguir. Dado o sinal
de voz abaixo:
plot(f, abs(spect(1:128)))/max(abs(spect(1:128)));
xlabel ('frequencia');
subplot(2,1,2);
filt_spect=fft(filt_sp, 256);
plot(f, abs(filt_spect(1:128))/max(abs(filt_spect(1:128))));
wavwrite (filt_sp, fs, 'casa1_firfilt.wav');
a) b)
Fig. 11.7. a) Sinal amostrado com uma taxa apropriada para sua recuperação e
b) o mesmo sinal amostrado de forma incorreta (baixa taxa de amostragem)
tornando impossível uma recuperação fiel ao original.
Além da amostragem, o sinal de voz passa por outro processo para ser
digitalizado: a quantização. Na Fig. 11.8, podemos ver o sinal de entrada
contínuo, sendo inserido em um amostrador que cuida da discretização do sinal
no tempo. O quantizador é responsável então pela discretização do sinal em
amplitude.
Q quantização uniforme exige uma mesma distância entre xi e xi-1. Existem duas
classes de quantizadores uniformes: mid-riser e mid-tread. No mid-riser, a
origem aparece no ponto médio da parte crescente de uma função escada. O
quantizador mid-riser é conveniente quando temos o número de níveis uma
potência de 2. O mid-riser possui o mesmo número de níveis positivos e
negativos que estão simetricamente posicionados em relação à origem. O
quantizador mid-tread possui um nível negativo a mais que positivo. O
quantizador mid-tread possui o zero (000) no meio da escala o que é útil em
diversas aplicações. O quantizador mid-riser não possui o nível zero. Pode-se
ter desde a codificação direta a escolhas que tentem manter equilibrada a
potência utilizada entre os bits da amostra em relação a origem, etc. A Fig. 11.11
apresenta esses dois quantizadores para uma quantização de 3 bits como na
Fig. 11.11.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 317
a)
b)
Fig. 11.11. Quantizadores de 3 bits: a) mid-riser e b) mid-tread.
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 318
É geralmente assumido que o sinal de voz foi limitado em faixa e que foi
amostrado em taxa não inferior a taxa de Nyquist (pelo menos 8.000
amostras/segundo). É também considerado que o sinal foi quantizado e que o
erro de quantização é desprezível.
11.1)
∞
En = ∑ [ x(m).w(n − m)]
m = −∞
2
Essa função é de aritmética mais simples que a energia, porém tem menor
capacidade de diferenciação entre voz audível e inaudível.
Tanto para a Energia quanto para a Magnitude de Curta Duração para uma
janela de 20ms uma taxa de amostragem de 100 amostras/seg. é adequada. A
janela não precisa ser restrita a qualquer função comumente utilizada como
filtro. Ela também não precisa ser retangular; é necessário apenas que o filtro
seja suave e passa-baixa. Pode ser um filtro FIR ou IIR; sugere-se FIR, pois a
saída é mais fácil de ser computada a uma baixa taxa de amostragem. A janela
não precisa ter dimensão finita; basta que a Transformada-Z seja uma função
racional.
Um valor de 0 < a < 1 dá uma janela cuja duração efetiva pode ser ajustada
como desejado (Fig. 11.15). Isso pode produzir um LPF com banda-passante
mais larga ou mais estreita.
Um sinal senoidal de frequência F0, amostrado numa taxa Fs, possui Fs/F0
amostras por ciclo de senóide. Cada ciclo possui duas passagens pelo zero (Fig.
11.16), ou seja, a taxa média de passagens pelo zero é:
Z = 2.F0/Fs passagens/amostra
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 325
Fig. 11.16. Uma senóide tem duas passagens pelo zero em um ciclo.
Pode-se definir:
∞
zn = ∑ | sgn[ x( m)] − sgn[ x(m − 1)] | w(n − m)
m = −∞
onde
sgn[x(m)] = 1, se x(n) ≥ 0
= -1, se x(n) < 0
e
w(n) = 1/(2N), para 0 ≤ n ≤ N-1
= 0, caso contrário
O modelo para a produção da fala sugere que a energia dos sinais de voz está
concentrada abaixo de 3 kHz (340 Hz a 4 KHz) devido ao corte produzido pela
onda produzida na glote. A maior parte da energia para sinais de voz não
audíveis é de alta-frequência: altas frequências implicam uma taxa alta de
passagem pelo zero e baixas frequências implicam numa taxa baixa de
passagem pelo zero. Assim, há uma correlação forte entre taxa de passagem
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 326
∞
Rn ( k ) = ∑ x ( m ) w( n − m ) x ( m + k ) w( n − k − m )
m = −∞
[x,fs]=wavread('casa1.wav');
ms20=fs/50; % minimum speech Fx at 50Hz
%
% plot waveform
t=(0:length(x)-1)/fs; % times of sampling instants
subplot(2,1,1);
plot(t,x);
legend('Waveform');
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 328
xlabel('Time (s)');
ylabel('Amplitude');
%
% calculate autocorrelation
r=xcorr(x,ms20,'coeff');
%
% plot autocorrelation
d=(-ms20:ms20)/fs; % times of delays
subplot(2,1,2);
plot(d,r);
legend('Autocorrelation');
xlabel('Delay (s)');
ylabel('Correlation coeff.');
Fx=512.195Hz
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 329
[x,fs]=wavread('casa1.wav');
ms1=fs/1000; % máxima frequência de voz Fx em 1000Hz
ms20=fs/50; % mínima frequência de voz Fx em 50Hz
%
% plotagem da forma de onda
t=(0:length(x)-1)/fs;
subplot(3,1,1);
plot(t,x);
legend('Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
Y = fft(x);
% plotagem do espectro abaixo de 5000Hz
hz5000=5000*length(Y)/fs;
f=(0:hz5000)*fs/length(Y);
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 331
subplot(3,1,2);
plot(f,20*log10(abs(Y(1:length(f)))+eps));
legend('Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
% cepstrum
C=fft(log(abs(Y)+eps));
% plotagem entre 1ms (=1000Hz) e 20ms (=50Hz)
q=(ms1:ms20)/fs;
subplot(3,1,3);
plot(q,abs(C(ms1:ms20)));
legend('Cepstrum');
xlabel('Quefrency (s)');
ylabel('Amplitude');
[c,fx]=max(abs(C(ms1:ms20)));
fprintf('Fx=%gHz\n',fs/(ms1+fx-1));
11.4 Exercícios
^
x = sign(c(n)) * (c(n) + 1) * ∆ / 2
onde a função sign(c(n)) é igual a +1, se o primeiro bit de c(n) for igual a
zero, e igual a –1, se o primeiro bit de c(n) for 1. Para c(n) é usada uma
representação em sinal-magnitude. Tal quantizador possui características de
um quantizador mid-riser? E mid-tread?
Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 335