Вы находитесь на странице: 1из 321

Processamento Digital de Sinais

Processamento Digital de Sinais Carlos Alexandre Mello Centro de Informática – UFPE 2011

Carlos Alexandre Mello Centro de Informática – UFPE

2011

Agradecimentos à turma de Processamento Digital de Sinais dos cursos de Engenharia da Computação e Ciência da Computação de 2010.1: Adriano Damascena, Bernardo Fonseca, Daker Fernandes, Daniel Brito, Fernando Rodrigues, Gabriel Carvalho, João Carlos Procópio, Lucas André Paes, Luis Felipe Pereira, Onildo Ferraz Filho, Rafael Menezes, Renan Pires, Rodolpho de Siqueira, Rodrigo Perazzo, Thiago Lima e Thiago Henrique Fernandes.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 1

Índice

1. Processamento Digital de Sinais

4

1.1 Principais Tipos de Sinais

5

1.2 Sistemas Discretos no Tempo 6

1.3 Sistemas Lineares e Invariantes no Tempo

8

1.4 Sistemas LTI como Filtros Seletores de Frequência

11

1.5 Representação de Sequências pela Transformada de Fourier

15

1.5.1 Propriedades da Transformada de Fourier 18

19

1.7 Exercícios 27

1.8 Bibliografia Complementar

1.6 Códigos do MatLab

30

2. A Transformada Z 31

2.1 Propriedades da Transformada Z 33

2.2 Pares de Transformadas Z 36

2.3 Exemplos de Cálculo da Transformada Z

36

2.4 Propriedades da Região de Convergência 44

2.5 A Transformada Z Inversa 45

2.6 Exercícios 54

2.7 Bibliografia Complementar

56

3. Teoria da Amostragem

57

3.1 Teorema de Shannon 62

3.2 Re-Obtenção do Sinal a partir de suas amostras 67

70

4.1 Filtros Digitais 72

4.2 Filtros FIR 76

84

4.3 Filtros IIR 95

4.4 Exercícios 101

4. Filtros Digitais

4.2.1 Sistemas com Fase Linear

4.5 Bibliografia Complementar

102

5. Técnicas de projeto de filtros

103

5.1

Projeto de Filtros FIR

106

5.1.1 Projeto usando janelas

107

5.1.2 Técnicas de Projeto por Amostragem em Frequência 131

5.1.3 Projeto Equirriple Ótimo

133

5.2 Projeto de Filtros IIR 136

5.2.1 Escala Relativa

137

5.2.2 Características de Protótipos Analógicos

140

5.3 Transformações em Frequência 149

5.4 Comparação entre Filtros FIR e IIR 151

5.5 Exercícios 153

5.6 Bibliografia Complementar

154

6. Transformada Discreta de Fourier

155

6.1 A Série Discreta de Fourier

156

6.2 A Transformada Discreta de Fourier

161

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 2

166

6.5 Exercícios 169

6.4 A Transformada Discreta Bi-Dimensional de Fourier

6.6 Bibliografia Complementar

171

7. Transformada Rápida de Fourier (FFT- Fast Fourier Transform)

172

7.1 Algoritmos

Rápidos

172

7.2 Algoritmo de Cooley-Tukey ou Decimação no Tempo

174

7.3 Outras FFTs

185

7.4 Exercícios 187

7.5 Bibliografia Complementar

188

8. Análise Wavelet

189

8.1 A Transformada Wavelet 192

8.2 Análise em Multiresolução 196

199

8.4 Wavelets no MatLab 204

8.3 Sobre os coeficientes das wavelets

8.5 Exercícios 211

8.6 Bibliografia Complementar

213

9. Processamento Digital de Imagens

214

9.1 Digitalização 217

9.2 Sistema Computacional de Cores 220

9.3 Histograma 224

9.4 Filtragem de Imagens Digitais 226

234

9.5 Compressão de Imagens

9.6 Processamento de Imagens no MatLab 236

9.7 Exercícios 240

9.8 Bibliografia Complementar

241

10.

Técnicas de Codificação de Áudio e Vídeo

242

10.1 Teoria dos

Códigos

242

10.2 Algoritmos de Compressão

246

10.2.1 Código de Huffman 247

250

10.2.2 Run-length

10.2.3 Algoritmo de Lempel-Ziv-Welch 250

10.3

Algoritmos de codificação multimídia

251

10.3.1 Codificação de Vídeo

252

10.3.2 Codificação de Áudio

266

10.4

Implementações no MatLab

271

10.4.1 Processamento de Vídeo no MatLab

271

10.4.2 Processamento de Áudio no MatLab

277

10.5 Exercícios 287

288

11. Processamento de Voz 289

11.1 Amostragem e Quantização 296

10.6 Bibliografia Complementar

11.2 Técnicas Temporais para Processamento de Voz

303

11.2.1

Energia de Curta Duração

305

11.2.2

Magnitude de Curta Duração 307

11.2.3.

Taxa de Passagem pelo Zero 308

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 3

11.3 Análise Cepstral

313

11.4 Exercícios

318

11.5 Bibliografia Complementar

319

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 4

1. Processamento Digital de Sinais

Sinais estão presentes em diversas situações do dia-a-dia do ser humano. Um sinal pode ser definido como uma função que carrega uma informação. A forma mais comum para nós é a comunicação por sinal de voz. Nesse exemplo, temos

o sinal gerado pelo trato vocal e o sinal recebido pelo sistema auditivo. Apesar de ser o mesmo sinal transmitido a forma como ele é processado é inerente ao receptor. O processamento de sinais lida com a representação, transformação e manipulação dos sinais e da informação que eles contêm. Até a década de 60, a tecnologia para processamento de sinais era basicamente analógica. A evolução de computadores e microprocessadores juntamente com diversos desenvolvimentos teóricos causou um grande crescimento na tecnologia digital, surgindo o processamento digital de sinais (PDS). Um aspecto fundamental do processamento digital de sinais é que ele é baseado no processamento de seqüências de amostras. Para tanto, o sinal contínuo no tempo é convertido nessa seqüência de amostras, i.e., convertido em um sinal discreto no tempo. Após o processamento digital, a seqüência de saída pode ser convertida de volta a um sinal contínuo no tempo.

A maior parte do processamento de sinais envolve processar um sinal para obter

outro sinal. Normalmente, isso é conseguido por um processo conhecido como

filtragem.

Sinais digitais são aqueles para os quais tanto o tempo quanto a amplitude são discretos.

Sinais discretos no tempo são representados matematicamente como uma seqüência de números, x. O n-ésimo número dessa seqüência é denotado por x[n]. Assim, x é formalmente escrito como:

x = {x[n]},

-<n <

onde n é um inteiro. Tais seqüências são geradas a partir de um processo de amostragem periódica de um sinal analógico. Assim, o valor numérico do n-

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 5

ésimo número da seqüência é igual ao valor do sinal analógico x a (t) no tempo nT, i.e.:

x[n] = x a (nT),

-<n <

1.1 Principais Tipos de Sinais

Em um estudo sobre processamento digital de sinais, alguns sinais são de mais importância. Dentre eles, temos o impulso unitário, δ[n], definido como:

δ

[

]

n =

0,

1,

n

n =

0

0

Um dos mais importantes aspectos do impulso é que uma seqüência arbitrária pode ser representada como uma soma de impulsos escalonados e deslocados. Por exemplo, a seqüência p[n] abaixo:

e deslocados. Por exemplo, a seqüência p[n] abaixo: pode ser representada como: p[n] = 3. δ

pode ser representada como:

p[n] = 3.δ[n+3] + 2.δ[n + 1] + 4.δ[n - 2] – 1.δ[n – 3]

De forma mais geral, qualquer seqüência x[n] pode ser representada como:

x[ n ]

=

k =−∞

x[ k ]δ[ n

k ]

Outra seqüência importante é o degrau unitário, u[n]:

u n =

[

]

1,

0,

n

n <

0

0

O degrau relaciona-se com o impulso como:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 6

u[ n ]

=

n

k =−∞

δ[ k ]

Uma forma alternativa de representar o degrau em termos de impulso é obtida interpretando o degrau em termos de uma soma de impulsos deslocados. Isso pode ser expresso como:

u n

[

]

=

k = 0

δ n k

[

]

Por outro lado, o impulso relaciona-se com o degrau unitário como:

δ[n] = u[n] – u[n – 1] Uma seqüência exponencial é importante na análise de sistemas discretos e invariantes no tempo. A forma geral de uma seqüência exponencial é dada por:

x[n] = A.α n

1.2 Sistemas Discretos no Tempo

Um sistema discreto no tempo é definido matematicamente como uma transformação que mapeia uma seqüência de entrada x[n] em uma seqüência de saída y[n]. Isso pode ser denotado por:

y[n]=T{x[n]}

como representado na Fig. 1.1.

denotado por: y[n]=T{x[n]} como representado na Fig. 1.1. Fig. 1.1. Representação de um sistema discreto no

Fig. 1.1. Representação de um sistema discreto no tempo

Alguns exemplos ilustram sistemas simples:

1) Sistema de atraso ideal: y[n] = x[n – n d ],

-<n <

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 7

2) Média móvel:

1

M

1

+

M

2

+ 1

k

M

2

∑

=−

M

x n k

[

1

]

A seguir, destacamos algumas importantes propriedades dos sistemas.

1) Um sistema é dito sem memória (memoryless systems) se a saída y[n] a cada valor de n depende apenas da entrada x[n] no mesmo valor de n.

Ex: y[n] = {x[n]} 2

2) Um sistema é linear se obedece ao princípio da superposição. Ou seja:

T{a.x 1 [n] + b.x 2 [n]} = a.T{x 1 [n]} + b.T{x 2 [n]}

Ex: Acumulador:

y[ n ]

=

n

k =−∞

x[ k ]

3) Um sistema é invariante no tempo é um sistema no qual um deslocamento no tempo (ou atraso) da seqüência de entrada gera um deslocamento correspondente na seqüência de saída. Ou seja, suponha um sistema que transforma uma seqüência de entrada x[n] na seqüência de saída y[n]. Se a seqüência de entrada sofre um deslocamento de n 0 , x[n] = x[n – n 0 ], então a seqüência de saída torna-se y[n] = y[n – n 0 ].

Ex: Um sistema de atraso ideal é um sistema invariante no tempo.

Ex: O seguinte exemplo mostra um sistema que não é invariante no tempo:

y[n] = x[M.n],

-<n <

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 8

4) Um sistema é dito causal se ele não depende de valores futuros da seqüência. Ou seja, o valor de y[n 1 ] pode ser calculado apenas com valores de x[n] para n n 1 . Ex: Um sistema não causal: y[n] = x[n + 1] – x[n]

5) Um sistema é dito estável se toda entrada limitada provoca uma saída limitada. Assim, se, para todo n, |x[n]| B < , para algum valor finito B, então

|y[n]| C < , para algum valor finito C.

1.3 Sistemas Lineares e Invariantes no Tempo

Uma classe importante de sistemas consiste naqueles que são lineares e invariantes no tempo. Como dito acima, os sistemas lineares são aqueles que obedecem ao princípio da superposição. Se a propriedade da linearidade é combinada com a representação de uma seqüência geral como uma combinação de impulsos, então um sistema linear pode ser completamente caracterizado pela sua resposta ao impulso. Seja h k [n] a resposta do sistema a δ[n – k]. Assim, como:

x[ n ]

então

y n

[

]

=

=

k =−∞

x[ k ]δ[ n

k ]

T

{

k =−∞

x k δ n k

[

]

[

]}

Pelo princípio da superposição, podemos escrever:

y[ n ]

=

k =−∞

x[ k ]T {δ[ n

k ]}

=

k =−∞

x[ k ]h [ n ]

k

De acordo com essa equação, a resposta do sistema a qualquer entrada pode ser expressa em termos da resposta a δ[n – k].

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 9

A propriedade da invariância no tempo implica que, se h[n] é a resposta a δ[n],

então a resposta a δ[n - k] é h[n – k]. Com isso, podemos dizer que:

y[ n ]

=

k =−∞

x[ k ]h[ n

k ]

(Eq. 1.1)

Como conseqüência, um sistema linear invariante no tempo é completamente

descrito por sua resposta ao impulso. Essa equação é conhecida como soma de convolução (convolution sum) que pode ser representada pela notação:

y[n] = x[n]*h[n]

(Eq. 1.2)

Apesar da semelhança na notação, deve-se salientar que a soma de convolução para sinais discretos não é uma aproximação da integral de convolução.

Propriedades da soma de convolução:

1) Comutatividade:

x[n]*h[n] = h[n]*x[n]

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

podemos fazer m = n – k . 2) Distributividade: x[n]*(h1[n] + h2[n]) = x[n]*h1[n] +

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 10

4) Conexão em Paralelo

Carlos Alexandre Mello Página 10 4) Conexão em Paralelo 5) Causalidade Como definido anteriormente, um sistema

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[n 0 ], precisamos apenas de x[n], n n 0 . 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

=

n =−∞

| h[ n ] |

<∞

Para qualquer que seja a entrada x[n] de um sistema:

x[n]* δ[n] = x[n]

Assim, em geral, se um sistema linear invariante no tempo tem uma resposta ao impulso h[n], então seu sistema inverso, se existir, tem resposta ao impulso h i [n] definida pela relação:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 11

h[n]*h i [n] = h i [n]*h[n] = δ[n]

Uma classe importante de sistemas lineares invariantes no tempo consiste daqueles para os quais x[n] e y[n] se relacionam através de uma equação de diferenças de coeficientes constantes lineares de n-ésima ordem da forma:

N

k =

0

[

a y n

k

k

]

=

M

=

k

0

b x n k

k

[

] (Eq. 1.3)

Um exemplo de um tal sistema é um acumulador definido pela seqüência cujo diagrama de blocos pode ser visto na figura abaixo:

cujo diagrama de blocos pode ser visto na figura abaixo: Tal ou sistema é representado pela

Tal

ou

sistema é representado pela equação de diferenças:

y[n] = y[n – 1] + x[n]

y[n] - y[n – 1] = x[n]

Pela Eq. 1.3, temos: N = 1, a 0 = 1, a 1 = -1, M = 0 e b 0 = 1.

Assim, para cada valor de n a saída é dada pela entrada x[n] somada com o valor anterior do acumulador, y[n – 1].

1.4 Sistemas LTI como Filtros Seletores de Frequência

O termo filtro é normalmente usado para descrever um dispositivo que

discrimina, de acordo com algum atributo do objeto aplicado como entrada, o

que passa através dele. Por exemplo, como um filtro de ar que deixa o ar passar, mas retém partículas de impureza. Um sistema LTI também funciona como um tipo de discriminante ou filtrando entre os vários componentes de

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 12

frequência na sua entrada. A forma da filtragem é definida pela resposta de frequência H(ω) que depende da escolha de parâmetros do sistema (como os coeficientes do filtro). Assim, com uma escolha apropriada de parâmetros, podemos projetar filtros seletores de frequência que deixam passar sinais contendo componentes de frequência em algumas bandas e atenuando sinais contendo componentes de frequência em outras bandas.

Em geral, um sistema LTI modifica o espectro do sinal de entrada X(ω) de

acordo com a resposta em frequência H(ω) que leva a um sinal de saída com

espectro Y(ω) = H(ω)X(ω). De certa forma, H(ω) atua como uma função de peso nos diferentes componentes de frequência do sinal de entrada. Assim, um sistema LTI pode ser visto como um filtro embora não bloqueie completamente qualquer componente de frequência do sinal de entrada. Consequentemente, os termos “sistema LTI” e “filtro” são sinônimos e são normalmente usados sem distinção.

Um filtro é um sistema LTI usado para desempenhar a função de filtragem seletora de frequência. Filtragem é usada em processamento digital de sinais em uma grande variedade de formas, como remoção de ruído, equalização, análise espectral de sinais, etc.

Filtros são normalmente classificados de acordo com suas características no domínio da frequência como passa-baixa, passa-alta, passa-faixa e rejeita-faixa. As características de resposta em magnitude ideais desses tipos de filtros estão ilustradas na Fig. 1.2. Esses filtros ideais têm características de ganho constante na banda de passagem (normalmente, tomados como unitários) e ganho zero na banda de corte. Mais detalhes sobre filtros digitais e formas de projeto serão vistos nos Capítulos 4 e 5.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 13

de Sinais - Prof. Carlos Alexandre Mello Página 13 Fig. 1.2. Resposta em magnitude para alguns

Fig. 1.2. Resposta em magnitude para alguns filtros seletores de frequência discretos no tempo.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 14

Outra característica de um filtro ideal é uma resposta de fase linear. Considere que um sinal {x[n]} com componentes de frequência dentro da faixa de ω 1 < ω

<ω 2 passa por um filtro com resposta em frequência:

H (

ω ) =

Ce

j n

ω

0

ω

1

<

<

ω ω

2

0 senão

onde C e n 0 são constantes. O sinal na saída do filtro terá um espectro:

Y

(

)

ω

=

X

(

)

ω

H

(

)

ω

=

CX

(

)

ω

e

j n

ω

0

Aplicando as propriedades da transformada de Fourier, obtemos a saída no domínio do tempo:

Y[n] = C.x[n – n 0 ]

Consequentemente, a saída do filtro é simplesmente uma versão escalonada e atrasada do sinal de entrada. Tanto um atraso simples quanto uma diferença em escala são considerados toleráveis e não distorções do sinal. Portanto, filtros ideais têm uma característica de fase linear na banda de passagem que é:

Θ(ω) = -ωn 0

A derivada da fase em relação à frequência é medida em unidades de atraso. Assim, podemos definir o atraso do sinal como uma função da frequência como:

τ ω

g

(

) =−

d Θ (

ω

)

d

ω

τ g (ω) é chamado de atraso de grupo (group delay) do filtro. Entendemos τ g (ω)

como o atraso de tempo que os componentes de frequência ω de um sinal são

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 15

submetidos à medida que ele passa da entrada à saída do sistema. Note que, quando Θ(ω) é linear, τ g (ω) = n 0 = constante. Nesse caso, todas as componentes de frequência do sinal de entrada sofrem o mesmo atraso de tempo.

Como conclusão, todos os filtros ideais têm características de magnitude constante e fase linear dentro da banda de passagem. Em todos os casos, tais filtros não são fisicamente realizáveis, mas servem como idealizações matemáticas para filtros práticos.

1.5 Representação de Sequências pela Transformada de Fourier

Assim como sinais do contínuo, os sinais discretos no tempo também podem ser representados de formas diferentes. Uma das formas mais utilizadas é através da transformação do sinal para o domínio da freqüência através da Transformada de Fourier. Muitas seqüências podem ser representadas por uma integral de Fourier da forma:

1

2

π

π

π

x n

[

] =

(

X e

j

ω

)

e

j n

ω

d

ω

 

(Eq. 1.4)

j n

ω

 

(Eq. 1.5)

onde X(e jw ) é dada por:

(

X e

j

ω

)

=

n =−∞

[

]

x n e

A Eq. 1.4 é conhecida como a Transformada Inversa de Fourier, enquanto a Eq. 1.5 é a Transformada de Fourier.

Em geral, a Transformada de Fourier é uma função complexa em ω. Como na

resposta à freqüência, algumas vezes, pode-se expressar X(e jω ) na forma:

X(e jω ) = X R (e jω ) + j.X I (e jω )

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 16

ou na forma polar:

X(e jω ) = |X(e jω )| e jX(e^jω)

As quantidades |X(e jω )| e X(e jω ) são chamadas de magnitude e fase da

ou,

Transformada

simplesmente, espectro).

de

Fourier

(também

chamada

de

espectro

de

Fourier

Há casos onde a Transformada de Fourier para uma dada seqüência não converge. Esses casos podem ser definidos através da Transformada Z como veremos posteriormente.

Podemos verificar facilmente que as Eqs. 1.4 e 1.5 são inversas realmente. Especificamente, considere:

1

2

π

π

∫ ∑

π

m

=−∞

x m e

[

]

j m

ω

e

j n

ω

d

ω

=

^

x n

[

]

Se trocarmos a ordem da integração com o somatório, temos:

^

x [ n

]

=

m =−∞

x [ m

]

⎜ ⎝

1

2

π

π

π

e

j

ω

(

n m

)

d

ω ⎟ ⎠

Calculando a integral dentro dos parênteses, temos:

1

π

sin(

 

(

 

))

 

j

ω

(

 

)

 

π

n m

 

n m

d =

 

e

ω

2

π

π

π

(

n m

)

= ⎨

1,

0,

m

m

= n

n

=δ[ n m ]

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 17

Assim:

^

x n

[

]

=

[

x m

m =−∞

δ

]

[

n m

]

Exemplo 1:

Seja x[n] = a n u[n].

A TF é dada por:

(

X e

jw

)

=

n =−∞

x [ n ] e

jwn

=

n = 0

n

a e

jwn

=

n =

0

=

x n

[

]

(

ae

jw n

)

Que converge se |a.e -jw | < 1 ou |a| < 1.

OBS:

n 0

=

α

n

1

1

α , para |α| < 1

=

1

1 ae

jw

Exemplo 2:

Vamos calcular a resposta ao impulso de um filtro passa-baixa ideal cuja resposta em freqüência é:

H

LPF

(

e

jw

) =

⎩ ⎨ 0,

1,|

w

c

w

<

| <

|

w

|

c

<

w

π

A resposta o impulso h LPF [n] pode ser encontrada através da Transformada Inversa de Fourier:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 18

h

LPF

h

LPF

[

n

] =

[ n ] =

1

π

1

H

(

e

jw

)

e

jwn

dw

2

π

LPF

2

π

=

π

sin(

w n

c

)

π

n

,

−∞ < n < ∞

w

c

w

e

c

jwn

dw

 

1.5.1 Propriedades da Transformada de Fourier

 

Algumas propriedades da TF: Seja: x[n] X(e jw ) e y[n] Y(e jw )

 

Propriedade

Seqüência

 

Transformada de Fourier

 

Linearidade

a.x[n] + b.y[n]

a.X(e jw ) + b.Y(e jw )

 

Deslocamento no Tempo

x[n – nd]

e

-jwnd X(e jw )

 

Deslocamento na Freq

e

jwon x[n]

X(e j(w – w0) )

 

Reverso no Tempo

 

x[-n]

X(e -jw ) X*(e -jw ), se x[n] é real

 

Diferenciação em Freq

 

n.x[n]

j

dX(e jw )/dw

 

Convolução

x[n]*y[n]

X(e -jw ).Y(e -jw )

 

Modulação

x[n].y[n]

 

1

π

(

X e

j

θ

)

(

Y e

(

j w

θ

)

)

d

θ

2

π

 

π

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 19

1.6 Códigos do MatLab

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

== 0]; stem (x); Exemplos: 1. >> impseq (5, 0, 10); 2. x[n] = 2. δ

2.

x[n] = 2.δ[n + 2] - δ[n – 4],

>> 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]');

-5 n 5

stem (n, x); title ('Exemplo de Sequencia'); xlabel('n'); ylabel('x[n]'); -5 ≤ n ≤ 5

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 20

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

0]; stem (x); Exemplos 1. >> stepseq (5, 0, 10); 2. x[n] = n[u[n] – u[n

2.

x[n] = n[u[n] – u[n – 10]] + 10 e-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]');

x = x1 + x2; >> stem(n,x); title('Sequencia de Degraus'); xlabel('n'); ylabel ('x[n]');

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 21

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

stem (x); Exemplo: >> sinseq (0, 10); Operações em sequências Adição de sinais y[n] = x1[n]

Operações em sequências

Adição de sinais y[n] = x1[n] + x2[n]

function [y,n] = sigadd(x1,n1,x2,n2)

n = min(min(n1),min(n2)):max(max(n1),max(n2)); y1 = zeros(1, length(n)); y2 = y1; y1(find((n>=min(n1))&(n<=max(n1))==1)) = x1; y2(find((n>=min(n2))&(n<=max(n2))==1)) = x2;

y = y1 + y2;

Multiplicação de sinais y[n] = x1[n].x2[n]

function [y,n] = sigmult(x1,n1,x2,n2)

n = min(min(n1),min(n2)):max(max(n1),max(n2)); y1 = zeros(1, length(n)); y2 = y1; y1(find((n>=min(n1))&(n<=max(n1))==1)) = x1; y2(find((n>=min(n2))&(n<=max(n2))==1)) = x2;

y = y1.*y2;

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 22

Deslocamento y[n] = x[n – k]

function [y,n] = sigshift(x, m, n0)

n

= m + n0;

y

= x;

Inversão y[n] = x[-n]

function [y,n] = sigfold(x,n)

y

= fliplr(x);

n

= -fliplr(n);

Exemplo: Seja x[n] = {1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1}. O valor em negrito corresponde ao centro da sequência.

Sobre as sequências, temos que:

>> n = -2:10; >> x = [1:7, 6:-1:1];

a) Plote x 1 [n] = 2x(n – 5) – 3x[n + 4].

>> [x11, n11] = sigshift(x, n, 5); >> [x12, n12] = sigshift(x, n, -4); >> [x1, n1] = sigadd(2*x11,n11,-3*x12, n12); >> stem (n1, x1); title(‘Sequencia’); xlabel (‘n’); ylabel (‘x1(n)’);

sigadd(2*x11,n11,-3*x12, n12); >> stem (n1, x1); title(‘Sequencia’); xlabel (‘n’); ylabel (‘x1(n)’);

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 23

b) Plote x 2 [n] = x[3 – n] + x[n].x[n – 2]

>> [x21, n21] = sigfold(x, n); >> [x21, n21] = sigshift(x21, n21,3); >> [x22, n22] = sigshift(x, n,2); >> [x22, n22] = sigmult(x, n, x22, n22); >> [x2, n2] = sigadd(x21, n21, x22, n22); >> stem (n2, x2); title('Sequencia'); >> xlabel ('n'); ylabel ('x2(n)');

xlabel ( 'n' ); ylabel ( 'x2(n)' ); Convolução Considere as sequências: x = [3, 11,

Convolução

Considere as sequências:

x = [3, 11, 7, 0, -1, 4, 2], h = [2, 3, 0, -5, 2, 1];

-3 n 3 -1 n 4

onde, novamente, os termos em negrito indicam a origem do eixo das abscissas. As sequências podem ser vistas abaixo:

novamente, os termos em negrito indicam a origem do eixo das abscissas. As sequências podem ser

x[n]

novamente, os termos em negrito indicam a origem do eixo das abscissas. As sequências podem ser

h[n]

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 24

Podemos usar a função conv do MatLab diretamente:

>> x = [3, 11, 7, 0, -1, 4, 2]; >> h = [2, 3, 0, -5, 2, 1]; >> y = conv (x, h);

y =

6

31

47

6

-51

-5

41

18

-22

-3

8

2

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:

function [y, ny] = conv_m (x, nx, h, nh) nyb = nx(1) + nh(1); nye = nx(length(x)) + nh(length(h)); ny = [nyb:nye]; y = conv(h, x);

>> x = [3, 11, 7, 0, -1, 4, 2]; >> nx = [-3:3]; >> h = [2, 3, 0, -5, 2, 1]; >> nh = [-1:4]; >> [y, ny] = conv_m (x, nx, h, nh)

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

A amplitude -51 está no ponto de origem (ny = 0).

ny = -4 -3 -2 -1 0 1 2 3 4 5 6 7 A amplitude

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 25

Equações de Diferenças e Resposta ao Impulso

Exemplo: Dada a seguinte equação de diferenças:

y[n] – y[n – 1] + 0.9y[n – 2] = x[n],

para todo n

a) Calcule e plote sua resposta ao impulso h[n] para n = -20,

,

100.

Como vimos anteriormente, uma equação de diferenças é da forma:

N

0

k =

[

a y n

k

k

]

=

M

=

k

0

b x n k

k

[

]

De acordo com a equação dada, temos:

a = [1, -1, 0.9]

e

b = [1]

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]');

a, x); >> stem(n, h); title('Resposta ao impulso'); xlabel('n'); ylabel('h[n]');

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 26

b) Calcule e plote sua resposta ao degrau s[n] para n = -20,

,

100.

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]');

degrau'); xlabel('n'); ylabel('s[n]'); c) O sistema é estável? Como vimos, um sistema é estável

c) O sistema é estável?

Como vimos, um sistema é estável se:

S =

n =−∞

|

h[ n ] | <∞

Assim, no MatLab, basta fazermos:

>> sum(abs(h)) Ans = 14.8785

Logo, o sistema é estável.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 27

1.7 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.

2. Usando a definição de linearidade, mostre que o sistema de atraso ideal e a média móvel são ambos lineares.

3. Para cada sistema abaixo, determine se ele é (1) estável, (2) causal, (3) linear, (4) invariante no tempo e (5) sem memória:

a. T(x[n]) = g[n]x[n],

b. T(x[n]) = Σ n k=n0 x[k]

c. T(x[n]) = x[n – n0]

d. T(x[n]) = exp(x[n])

e. T(x[n]) = a.x[n] + b,

f. T(x[n]) = x[-n])

g. T(x[n]) = x[n] + 3.u[n + 1]

com g[n] dado

a e b números reais

4. O sistema T abaixo é invariante no tempo. Quando as entradas dele são x1[n], x2[n] e x3[n], as saídas são y1[n], y2[n] e y3[n], respectivamente.

no tempo. Quando as entradas dele são x1[n], x2[n] e x3[n], as saídas são y1[n], y2[n]

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 28

a)

Determine se o sistema pode ser linear.

b)

Se a entrada x[n] do sistema é um impulso (δ[n]), qual a saída y[n]?

c)

Determine a relação entre a entrada e a saída do sistema.

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)

linear invariante no tempo com resposta ao impulso h[n]. a) b) 6. Considere o sistema com

b)

invariante no tempo com resposta ao impulso h[n]. a) b) 6. Considere o sistema com entrada

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 < n 0 , então y[n] = 0, para n < n 0 .

a) Se x[n] = δ[n], determine y[n] para todo n.

b) O sistema é linear?

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 29

7. Plote a seguintes sequências no MatLab:

a) x[n] = n 2 .(u[n + 5] – u[n – 6]) + 10.δ[n],

-5 n 5

b) x[n] = 20.(0,5) n .(u[n – 4] – u[n - 10]),

-5 n 5

8. Seja x[n] sequências:

=

{1,

-2,

4,

6,

-5,

8,

10}, gere e plote no MatLab as seguintes

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]

9.

Usando as seguintes sequências:

x1[n] = u[n + 10] – u[n – 20]

x2[n] = 2.δ[n – 2] + 5.u[n + 10]

x3[n] = 5.u[n + 2] – 6.u[n – 3] mostre que a convolução linear tem as seguintes propriedades como válidas:

Comutatividade: x1[n]*x2[n] = x2[n]*x1[n] Associatividade: (x1[n]*x2[n])*x3[n] = x1[n]*(x2[n]*x3[n]) Distributividade: x1[n]*(x2[n] + x3[n]) = x1[n]*x2[n] + x1[n]*x3[n])

Identidade: x[n]* δ[n – n 0 ] = x[n – n 0 ] Use a função conv_m.m apresentada anteriormente.

10. A operação de dilatação de sinal (ou decimação ou downsampling) é definida por:

y[n] = x[nM] na qual a sequência de entrada é down-sampled por um fator inteiro M. Por exemplo, se :

x[n] = {

,

-2, 4, 3, -6, 5, -1, 8,

}

então a sequência down-sampled por um fator de 2 é dada por:

y[n] = {

,

-2, 3, 5, 8,

}

Escreva uma função no MatLab que execute essa dilatação. A função deve ser

da forma:

function [y, n] = dnsample(x, n, M) Cuidado com a origem do eixo!!

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 30

1.8 Bibliografia Complementar

1. Vinay

K.

Ingle,

John

Learning, 2000.

G.

Proakis,

Digital

Signal

Processing,

Thomson

2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007.

3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 31

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 seqüência dada por:

X

( e

jw

)

=

n =−∞

x[ n ]e

jwn

Seja z = e jw . Temos então, a TZ definida como:

X

( z )

=

n =−∞

x[ n ] z

n

Essa é chamada também de TZ bilateral. A transformada unilateral é dada por:

(

X z

)

=

n = 0

x n z

[

]

n

Notadamente, há uma relação entre a TZ e a TF. Se z é uma variável complexa,

z pode ser escrita como e jw = cos(w) + j.sen(w). Nesse caso, a TZ transforma-se

na TF. De forma mais geral, se z = r.e jw , sua representação gráfica corresponde

ao círculo no Plano imaginário (chamado de Plano-Z). Se esse círculo tem raio

igual a 1, então temos a condição da TZ = TF (Fig. 2.1). Assim, a TZ calculada

no círculo unitário é igual à TF.

A Transformada Z não converge para todos os valores de Z. Onde a TZ

converge é chamada de região de convergência (ROC – Region of Convergence). Para garantir a convergência é preciso que:

n = 0

|

x n z

[

]

n

| <∞

Assim, é possível que TZ convirja mesmo se a TF não convergir. Para a TF convergir, a ROC da TZ deve conter o círculo unitário. Uma transformada Z só está completamente definida se sua ROC estiver determinada.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 32

de Sinais - Prof. Carlos Alexandre Mello Página 32 Fig. 2.1. Plano Z: representação gráfica da

Fig. 2.1. Plano Z: representação gráfica da transformada Z no plano complexo. No círculo unitário, a transformada Z reduz-se à transformada de Fourier.

A série definida pela TZ é chamada de série de Laurent. Uma tal série representa uma função contínua em qualquer ponto dentro da região de convergência. Assim, a TZ e todas as suas derivadas devem ser funções contínuas de z na ROC. Isso implica que, se a região de convergência uniforme inclui o círculo unitário, então a TF e suas derivadas com respeito a w são funções contínuas de w. Além disso, a seqüência deve ser absolutamente somável, i.e., uma seqüência estável.

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.:

X z =

(

)

P

(

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 Mello

Página 33

2.1 Propriedades da Transformada Z

a) Linearidade: ax 1 [n] + bx 2 [n] aX 1 (z) + bX 2 (z), ROC = ROC x1 ROC x2

Comentários:

A prova de tal propriedade vem diretamente da definição de transformada Z:

X

( z )

=

n =−∞

x[ n ] z

n

Considere que x[n] = ax 1 [n] + bx 2 [n]. Logo:

X ( z )

=

( ax [ n ] bx [ n ]) z

1

+

2

n

=−∞

n

=

n =−∞

ax [ n ] z

1

n

+

n =−∞

bx [ n ] z

2

n

= aX 1 (z) + bX 2 (z)

=

n =−∞

ax [ n ] z

1

n

=

a

n =−∞

x [ n ] z

1

n

+

+

bx [ n ] z

2

n

=

b

n =−∞

x [ n ] z

2

n

b) Deslocamento no tempo: x[n + n 0 ] z n 0 .X(z), ROC = ROC x (cuidado deve ser

tomado observando o que acontece para z = 0 ou z = ). Comentários:

Suponha que y[n] = x[n – n 0 ]. Logo:

Y ( z )

=

n =−∞

x[ n n ] z

0

n

Fazendo m = n – n 0 :

Y ( z )

(

Y z

)

=

=

m =−∞

x[ m ] z

z

n

0

.

(

X z

)

(

m + n

0

)

=

m =−∞

m

x[ m ] z . z

n

0

=

z

n

0

.

m =−∞

x[ m ] z

m

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 34

c) Multiplicação por uma exponencial discreta: a n x[n] X(z/a), ROC = |a|ROC X

Comentários:

Essa propriedade é observável substituindo a n x[n] na definição de TZ:

X

( z )

=

n =−∞

x[ n ] z

n

=

n =−∞

n

a x[ n ] z

n

Como conseqüência disso, todas as posições de pólos e zeros são escalonadas por um fator de a, já que, se X(z) tiver um pólo em z = z 1 , X(a -1 z) terá um pólo em z = a.z 1 . Se a for um número real, essa propriedade pode ser entendida como uma compressão ou expansão do plano Z.

d) Convolução no tempo: x 1 [n]*x 2 [n] X 1 (z).X 2 (z) , ROC contém ROC x1 ROC x2

Comentários:

Seja:

 

y[ n ]

=

Tal que:

k =−∞

x [ k ] x [ n k ]

1

2

Y ( z )

=

=

n =−∞

y[ n ] z

∑ ∑

n =−∞

x

k =−∞

n

1

[ k ] x [ n k ] z

2

Se mudarmos a ordem dos somatórios:

Y ( z )

=

∞ ∞

x [ k ]

1

x [ n k ] z

2

k

=−∞

n =−∞

n

n

Fazendo no segundo somatório m = n – k, temos:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 35

Y ( z )

=

k =−∞

x [ k ]

1

x [ m ] z

2

m

=−∞

m

z

k

Assim, para valores de z dentro das regiões de convergência para X1(z) e X2(z), podemos escrever:

Y z = X z X

1

(

)

(

)

2

(

z

)

e) Diferenciação no Domínio Z: n.x[n] -z.dX(z)/dz, ROC = ROC x (cuidado deve ser tomado observando o que acontece para z = 0 ou z = ). Comentários:

Essa propriedade pode ser facilmente provada diferenciando a definição da TZ:

X

( z )

=

dX

( z )

d ( z )

x[ n ] z

n

n

=−∞

=

(

n =−∞

n x n z

[

)

]

− −

n

1

dX ( z )

n =−∞

(

[

]

n x n z

[

)

n

]

− −

n

1

− =−

d ( z )

dX ( z )

z

z

n =−∞

z

nx n z

=

Z nx n

{

[

− =

d ( z )

]}

. (-z)

f) Reverso no tempo: x[-n] X(z -1 ), ROC = 1/ROC X Comentários:

Novamente, a definição de TZ prova esta propriedade:

X

( z )

=

n =−∞

x[ n ] z

n

Fazendo m = -n, temos:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 36

(

X z

)

=

m =−∞

x m z

[

]

m

=

m =−∞

x m z

[

](

1

)

m

=

(

X z

1

)

2.2 Pares de Transformadas Z

Segue um conjunto de pares de Transformadas Z mais úteis:

Segue um conjunto de pares de Tr ansformadas Z mais úteis: 2.3 Exemplos de Cálculo da

2.3 Exemplos de Cálculo da Transformada Z

A seguir, vamos apresentar alguns cálculos de transformada Z e como definir a ROC.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 37

Exemplo 1: x[n] = a n u[n]

(

X z

)

=

n

=−∞

x n z

[

]

n

ROC:

|az -1 | < 1 |z| > |a|

=

n

=−∞

n

a u n z

[

]

n

⇒ |z| > |a| = ∞ ∑ n =−∞ n a u n z [ ]

(

X z

)

=

n = 0

Para a = 1:

(

az

1 n

)

=

1

z

=

1 az

1

z

a

=

,|

z

∑∑

n

n

a z

=

= 0

nn =

0

|

>

|

a

|

x n

[

]

=

u n

[

]

Z

←⎯→

(

X z

)

=

1

1 z

1

,|

|

z >

1

(

1

az

)

n

Observamos que, para a = 1, a ROC não contém o círculo unitário. Logo, a TF para essa seqüência não converge.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello

Página 38

Exemplo 2: x[n] = -a n u[-n – 1]

X ( z )

(

X z

=

n

=−∞

x[ n ] z

n

)

=−

1

n =−∞

n

a z

=

n

n

=−∞

=−

n

a u[ n 1] z

− −

n

=−

n

=−∞

n

a u[ n 1] z

− −

n = 1

a

n

z

n

= −

1

n = 0

(