EN2610+-+PDS+_GRAD_+2014-2+-+PROCESSAMENTO+DIGITAL+DE+SINAIS-1

91
*

Transcript of EN2610+-+PDS+_GRAD_+2014-2+-+PROCESSAMENTO+DIGITAL+DE+SINAIS-1

*

*

*

Detalhamento do Programa

1. SINAIS E SISTEMAS DE TEMPO DISCRETO - sinais de tempo discreto, seqüências, seqüências periódicas - sistemas de tempo discreto, sistemas lineares invariantes no tempo, propriedades -somatórios de convolução, equações de diferenças a coeficientes constantes

2. ANÁLISE DE FOURIER DE TEMPO DISCRETO - Transformada de Fourier de tempo discreto, definição, propriedades - resposta em freqüência de sistemas lineares invariantes no tempo - amostragem e reconstrução de sinais analógicos

3. A TRANSFORMADA Z -Transformada Z bilateral : definição, propriedades, inversão -funções de transferência no domínio Z -soluções de equações de diferenças; diagrama de pólos e zeros

4. A TRANSFORMADA DISCRETA DE FOURIER - a série discreta de Fourier - amostragem e reconstrução no domínio Z - a Transformada discreta de Fourier (TDF), propriedades da TDF - convolução linear usando a TDF - a Transformada rápida de Fourier (FFT)

*

*

*

*

*

Elementos básicos de um sistema de processamento digital de sinais A maioria dos sinais encontrados na prática são analógicos por natureza. Estes sinais, que possuem uma variação contínua no tempo e na amplitude, são processados usando sistemas eletrônicos contendo elementos de circuito ativos e passivos. Esta abordagem é conhecida como processamento analógico de sinais - por exemplo, receptores de rádio e televisão. O processamento digital de sinais fornece um método alternativo para o processamento de um sinal analógico. Para realizar o processamento digitalmente, é necessária uma interface entre o sinal analógico e o processador digital. A saída do conversor A/D é um sinal digital que servirá de entrada para o processador digital, que pode ser : Um computador; um microprocessador ou microcontrolador de uso geral; um microprocessador especializado (DSP); um hardware dedicado ou até mesmo um “chip” FPGA (Field-Programmable Gate Array). Em aplicações onde a saída do processador digital de sinais deve ser convertida para a forma analógica, é necessário prover outra interface do domínio digital para o domínio analógico: o conversor D/A. Entretanto, existem outras aplicações práticas onde não é necessária a conversão D/A, como, por exemplo, no processamento digital de sinais de radar, pois a informação extraída do sinal (posição e/ou velocidade da aeronave) pode ser simplesmente visualizada ou impressa.

*

Há muitos motivos para preferir o processamento digital ao invés do analógico. Primeiramente, um sistema digital programável permite flexibilidade na reconfiguração do processamento simplesmente mudando-se o programa. Considerações de exatidão também são importantes: tolerâncias nos componentes de circuitos analógicos dificultam ao projetista controlar a exatidão do sistema de processamento. Por outro lado, um sistema digital pode ter a exatidão de suas operações perfeitamente controlada pelo número de bits da palavra ou pelo uso de aritmética de ponto flutuante ou ponto fixo. Isso confere aos sinais digitais uma maior imunidade a ruído durante o processamento. Sinais digitais podem ser armazenados em meios magnéticos sem deterioração ou perda de fidelidade, exceto aquela introduzida pela conversão A/D. Como conseqüência, os sinais podem ser transportados e processados “off-line” em um laboratório distante. O processamento digital possibilita igualmente a implementação de algoritmos e operações mais sofisticadas (ex.: Cancelador de eco). Finalmente, um dos fatores mais decisivos é o custo. Em muitos casos a implementação digital de um sistema de processamento de sinais é mais barata que sua contraparte analógica. O custo reduzido deve-se ao fato de que o hardware digital pode ser mais facilmente integrado (VLSI), ou também como resultado da facilidade de modificações permitida pela implementação digital. No entanto, o processamento digital de sinais tem suas limitações; principalmente a que se refere à velocidade de operação dos conversores A/D e dos microprocessadores. Há sinais analógicos (faixa de microondas) para os quais o estado da arte do hardware digital ainda está aquém do que seria necessário.

*

As operações de processamento digital de sinais podem ser classificadas como sendo tarefas de análise ou de filtragem digital conforme ilustra a figura.

Análise de sinais São operações que visam medir propriedades do sinal. Geralmente são realizadas no domínio da freqüência. Algumas de suas aplicações são: • Análise espectral • Reconhecimento de fala e de locutor • Identificação e controle de sistemas (automação e robótica) • Compressão de dados (voz, áudio, vídeo) • Radar e Sonar • Extração de características de sinais biológicos

Filtragem de sinais Este tipo de tarefa caracteriza-se pela estrutura “sinal entra-sinal sai”. Os sistemas que desempenham operações deste tipo são denominados genericamente de filtros. Usualmente (mas nem sempre) trata-se de uma operação no domínio do tempo. Algumas das possíveis aplicações são: • Cancelamento de ruído • Cancelamento de interferência • Separação de bandas espectrais • Formatação do espectro do sinal Em algumas aplicações, como síntese de voz, um sinal é primeiramente analisado e suas características são então usadas na filtragem digital para produzir a voz.

*

Quanto à sua relação com o tempo, os sinais são classificados a grosso modo em

analógicos (contínuos) ou discretos. Um sinal discreto será denotado por x(n), onde a

variável n assume valores inteiros e representa instantes discretos no tempo. Trata-

se de uma seqüência numérica representada por uma das seguintes notações:

onde a seta vertical indica a amostra no instante n=0. No MATLAB podemos representar uma seqüência de duração finita por um vetor

linha. Entretanto, tal vetor não possui nenhuma informação a respeito da posição n da amostra. Portanto, uma correta representação de x(n) requer dois vetores, um

para x e outro para n. Por exemplo, a seqüência

pode ser representada no MATLAB por >> n =[-4,-3,-2,-1,0,1,2,3]; x =[5,-2.3,-1.1,0,1.7,2,-3.5,4.2];

Geralmente, usa-se apenas um vetor quando a seqüência inicia em n=0. Uma

seqüência qualquer de duração infinita não pode ser representada no MATLAB

devido à limitação de memória.

),...1(),0(),1(),2(...,)()( xxxxnxnx

2.4,5.3,2,7.1,0,1.1,3.2,5)(nx

*

Tipos de seqüências

Várias seqüências elementares são importantes na análise de sinais:

1.Impulso unitário: Para implementar (n-n0) no intervalo n1 n0 n2 usaremos a

seguinte função no MATLAB:

function [x,n] = impulso(n0,n1,n2)

% Gera x(n) = delta(n-n0); n1 <= n,n0 <= n2

% ----------------------------------------------

if((n0 < n1)|(n0 > n2)|(n1 > n2)) error('Use n1<=n0<=n2')

end n = [n1:n2]; x = [(n-n0) == 0];

2. Degrau unitário: Para implementar u (n-n0) no intervalo n1 n0 n2 usaremos a

seguinte função no MATLAB: function [x,n] = degrau(n0,n1,n2)

% Gera x(n) = degrau(n-n0); n1 <= n,n0 <= n2

% ----------------------------------------------

if((n0 < n1)|(n0 > n2)|(n1 > n2)) error('Use n1<=n0<=n2')

end n = [n1:n2]; x = [(n-n0) >= 0];

*

Tipos de seqüências

3. Exponencial real: No MATLAB um operador matricial “.^” é usado para implementar

uma seqüência exponencial real.

Por exemplo, para gerar a seqüência

usamos: >> n = [0:12]; x = (0.8).^n;

4. Exponencial complexa: A função exp do MATLAB é utilizada para gerar seqüências

exponenciais complexas. Exemplo:

No MATLAB fica: >> n = [-5:5]; x = exp((0.2+5j)*n);

5. Senoidal: Uma senóide discreta pode ser implementada no MATLAB usando a

função cos (ou então sin ).

Por exemplo, para gerar a seqüência senoidal usamos: >> n = [-25,25]; x = 5*cos(0.08*pi*n+pi/4); 6. Periódica: Usa-se para denotar uma seqüência periódica. Para gerar P

períodos de a partir de um período de podemos copiar P vezes. Porém no

MATLAB existe uma maneira mais elegante : >> xtil = x’*ones(1,P) % P colunas de x (x é vetor linha) >> xtil = xtil(:); xtil = xtil’; % Concatenação e transposição

120 , )8.0()( nnx n

55 , )( )52.0( nenx nj

2525 , )4/08.0cos(5)( nnnx

)(~ nx

)(nx)(~ nx )(nx

*

Operações sobre seqüências

1. Adição de sinais: É implementada facilmente no MATLAB. No entanto, a duração das

seqüências deve ser a mesma. Se forem diferentes, deve-se primeiramente ajustar as

respectivas durações antes de efetuar a adição dos sinais.

2. Multiplicação de sinais: No MATLAB pode ser implementada por meio do operador matricial “.*”. Também é necessário ajustar as durações dos sinais.

3. Deslocamento: A expressão não pode ser implementada

diretamente no MATLAB. Mas se fizermos

poderemos usar a seguinte função: function [y,n] = deslocsinal(x,m,n0)

% implementa y(n) = x(n-n0)

% -------------------------

% [y,n] = deslocsinal(x,m,n0)

%

n = m+n0; y = x;

)()( knxny

)()( mxkmykmnknm

*

Operações sobre seqüências 4. Espelhamento: No MATLAB esta operação é implementada usando fliplr(): function [y,n] = espelhar(x,n)

% implementa y(n) = x(-n)

% -----------------------

% [y,n] = espelhar(x,n)

%

y = fliplr(x); n = -fliplr(n);

5. Soma de amostras: É implementada no MATLAB por sum(x(n1:n2))

6. Produto de amostras: É implementada no MATLAB por prod(x(n1:n2))

7. Energia: A energia de uma seqüência de duração finita pode ser implementada no MATLAB usando qualquer um dos dois modos possíveis: >> Ex = sum(x.*conj(x)); % usando conjugado de x

>> Ex = sum(abs(x).^2); % usando módulo de x

8. Potência do sinal: Pode ser implementada de forma semelhante à energia.

*

Síntese de seqüências

• Síntese por impulsos: Uma seqüência qualquer pode ser sintetizada como uma soma

ponderada de seqüências impulsivas deslocadas no tempo. Este resultado será usado

quando estudarmos os sistemas discretos.

• Síntese simétrica e anti-simétrica: Uma seqüência complexa qualquer pode ser

decomposta em componente simétrica e anti-simétrica. No MATLAB isso pode ser feito

por meio da seguinte função: function [xs, xa, m] = sim_antisim(x,n)

% Decomposição de um sinal complexo em componente simétrica e anti-simétrica

% --------------------------------------------------------------------------

% [xs, xa, m] = sim_antisim(x,n)

%

m = -fliplr(n);

m1 = min([m,n]); m2 = max([m,n]); m = m1:m2;

nm = n(1)-m(1); n1 = 1:length(n);

x1 = zeros(1,length(m));

x1(n1+nm) = x; x = x1;

xs = 0.5*(x + conj(fliplr(x)));

xa = 0.5*(x - conj(fliplr(x)));

*

A série geométrica

Uma seqüência exponencial positiva da forma { n , n 0} onde é

uma constante arbitrária, é chamada de série geométrica. Em processamento digital

de sinais, a convergência e a expressão para a somatória desta série é usada em

muitas aplicações. A condição de convergência e o valor para o qual a somatória

converge são indicados a seguir:

Também necessitamos de uma expressão para a somatória com um

número finito de termos:

Estes dois resultados serão usados mais adiante ao longo do curso e são

facilmente obtidos através da expressão para a somatória dos termos de uma

progressão geométrica.

1 para , 1

1

0n

n

1 ,

1 , 1

11

0n N

NN

n

*

*

Correlação entre seqüências

Correlação é uma operação usada em diversas aplicações de

processamento digital de sinais. É uma medida do grau de similaridade entre duas

seqüências. Sejam duas seqüências reais de energia finita, a correlação

cruzada entre as mesmas será:

O índice k é chamado de parâmetro de intervalo ou deslocamento. O

caso especial onde as duas seqüências são iguais é chamado de autocorrelação :

A autocorrelação mede a similaridade entre diferentes alinhamentos de

uma mesma seqüência .

)( e )( nynx

n

xy knynxkr )()()( *

n

xx knxnxkr )()()( *

*

Sistemas Lineares

Um sistema de tempo discreto é matematicamente descrito

como um operador T [•] que toma em sua entrada uma seqüência

denominada excitação e a transforma em sua saída em outra seqüência

chamada resposta.

Os sistemas de tempo discreto podem ser amplamente

classificados em lineares e não-lineares. Um sistema é linear se e

somente se satisfizer o princípio de superposição:

)( , )( , ,

)()()()(

linear é

2121

22112211

nxnxaa

nxTanxTanxanxaT

T

*

Sistemas Lineares

A resposta L[ (n - k)] pode ser interpretada como a

resposta de um sistema linear no tempo n à excitação de um impulso

unitário ocorrido no instante k. É a chamada resposta impulsiva, denotada

por h (n , k) .

A resposta impulsiva h (n , k) em princípio é variante no

tempo, o que na prática não é muito conveniente. Por outro lado, sistemas

com resposta impulsiva invariante no tempo são amplamente utilizados

em processamento digital de sinais.

*

Sistemas Lineares Invariantes no Tempo

Um sistema linear no qual o par excitação-resposta é invariante a um

deslocamento k no tempo é chamado de sistema linear invariante no tempo (LIT). Para

um sistema LIT a operação de deslocamento pode ser realizada indiferentemente tanto

na excitação como na resposta.

Em um sistema LIT, a resposta impulsiva variante no tempo h (n , k)

torna-se uma função invariante no tempo h (n - k). A resposta ao impulso de um

sistema LIT é dada então simplesmente por h (n). A operação matemática que envolve

a excitação e a resposta impulsiva para produzir a saída do sistema é chamada

somatória de convolução e é denotada pelo símbolo *.

Portanto um sistema LIT é completamente caracterizado no domínio do

tempo por sua resposta impulsiva h (n).

*

Estabilidade

É um conceito muito importante na teoria dos sistemas lineares. A

primeira razão para estudar a estabilidade é evitar construir sistemas que causem

danos ou operem em regime de saturação. Um sistema é dito estável se qualquer

entrada limitada produzir uma saída limitada. Isso equivale a dizer que um sistema

linear invariante no tempo é estável se e somente se sua resposta impulsiva é

absolutamente somável e, portanto, tende a zero quando se aproxima do infinito :

Causalidade

Este conceito é necessário para termos certeza de que o sistema pode

ser fisicamente realizável. Um sistema é dito causal se a saída no tempo discreto n0

depende somente das entradas com índice menores ou iguais a n0 ; isto é, a saída

não depende de valores futuros da entrada. Um sistema LIT é causal se e somente

se sua resposta impulsiva for igual a zero para índices menores que zero.

0)(lim)(

, , )()(

Nn

N nhnhdeEstabilida

yxnxnx

*

Sistemas FIR e sistemas IIR

É conveniente subdividir a classe dos sistemas LIT em dois tipos: Aqueles

que têm uma resposta impulsiva de duração finita (FIR - Finite-duration Impulse

Response) e aqueles outros que têm uma resposta impulsiva de duração infinita (IIR -

Infinite-duration Impulse Response). Um sistema FIR tem uma resposta impulsiva igual

a zero fora de um certo intervalo de tempo finito. Sem perda de generalidade, vamos

concentrar nossa atenção em sistemas FIR causais, nos quais

O sistema atua como uma janela que “olha” somente para as ultimas M amostras do

sinal de entrada a fim de gerar a saída. Ele simplesmente “esquece” as amostras com

índice menor que n - M. Por isso dizemos que um sistema FIR tem uma memória finita

com o tamanho de M amostras.

Em contraste, um sistema IIR possui uma memória de duração infinita,

pois sua saída é dada pela fórmula de convolução completa:

M

k

knxkhny

Mnnnh

0

)()()(

a reduz se convolução de fórmula a Então

e 0 , 0)(

0

)()()(k

knxkhny

*

Equações de diferenças

Até este ponto tratamos de sistemas LIT que são caracterizados por sua

resposta impulsiva, que nos permite obter a saída de um sistema para qualquer

seqüência de entrada por meio da somatória de convolução. Ou seja, a somatória de

convolução parece ser uma maneira de implementar o sistema. No caso de sistemas

FIR, esta realização envolve adições, multiplicações e um número finito de espaços de

memória para armazenar as amostras anteriores. Consequentemente, um sistema FIR

pode ser implementado diretamente através da somatória de convolução.

Se o sistema for IIR, entretanto, sua implementação prática por meio da

convolução é claramente impossível, pois requereria uma memória de tamanho infinito.

No entanto, um sistema IIR pode ser descrito e implementado na prática por meio de

uma equação de diferenças. As equações de diferenças que descrevem um sistema de

tempo discreto são o equivalente das equações diferenciais que descrevem um sistema

de tempo contínuo. Um sistema LIT discreto pode ser descrito por uma equação de

diferenças a coeficientes constantes na forma:

N

k

k

M

m

m

M

m

m

N

k

k

knyamnxbny

nmnxbknya

10

00

)()()(

:por eequivalent forma deou

, )()(

*

Resposta natural e resposta forçada

A resposta do sistema ilustrado na transparência é composta por duas

partes. A primeira é resultado da condição inicial do sistema. A segunda parte é a

resposta do sistema ao sinal de entrada.

Se o sinal de entrada fosse nulo para todo n então ficaríamos apenas com

a primeira parte da resposta, denominada resposta natural, pois depende apenas das

condições iniciais do sistema e não do sinal de entrada.

Se as condições iniciais fossem nulas, o sistema estaria inicialmente sem

“memória” e teríamos apenas a segunda parte da resposta, chamada de resposta

forçada pois caso não houvesse entrada também não haveria saída.

Em um sistema linear, a resposta completa é dada pela soma da resposta

natural e da resposta forçada (princípio da superposição) :

)1(y

)()()( nynyny FN

*

*

Transformada de Fourier de Tempo Discreto (TFTD)

Vimos anteriormente como um sistema discreto linear e invariante no

tempo (LIT) pode ser representado utilizando sua resposta impulsiva, que nos permite

calcular a resposta do sistema à qualquer seqüência de entrada, usando o somatório de

convolução. Isso é possível devido ao fato de que podemos representar qualquer sinal

discreto por uma combinação linear de impulsos unitários devidamente escalados e

deslocados no tempo. De maneira similar, poderíamos representar qualquer seqüência

como combinação linear de outras seqüências. Entretanto, quando o sistema é LIT, uma

destas possíveis representações mostra-se especialmente útil: A Transformada de

Fourier de Tempo Discreto (TFTD), que é baseada na seqüência exponencial complexa

:

}{ nje

radianos. em medida e digital freqüência denominada , real

variávelda complexa e contínua função uma é onde

2

1)(

:por obtidaser pode inversa madaA transfor

)()(

:por definida é (TFTD) Discreto Tempo de

Fourier de daTransforma sua então )( Se

1

j

nj

-

jj

n

njj

-

eX

deeXeXFnx

enxnxFeX

nx

*

Implementação da TFTD no MATLAB

Se o sinal discreto for de duração infinita, o MATLAB não pode ser usado

para calcular diretamente a TFTD a partir da definição. Mas pode ser usado para plotar o

módulo e a fase (ou parte real e imaginária) da TFTD no intervalo [0, ].

Caso a seqüência tenha duração finita, o MATLAB pode ser usado para

implementar diretamente a TFTD pela sua definição. Para calcular a TFTD em

freqüências igualmente espaçadas no intervalo [0, ] podemos fazer uso de uma

operação de multiplicação vetorial:

Esta não é a maneira mais elegante de calcular numericamente a TFTD,

pois nT k é uma matriz N x (M+1) que pode exceder o tamanho limite na Student

Edition do MATLAB para valores grandes de N e M. Mais adiante, quando estudarmos a

Transformada Discreta de Fourier, veremos como implementar algoritmos

computacionalmente mais eficientes por meio da Transformada Rápida de Fourier.

knxX

knXx

T

l

j

l

N

l

l

knMjj

kN

M

πj

kneXnx

MknxeeX

MkkM

πnnnNnx

k

lk

exp :escrever podemos

e , , )( Definindo

,...,1,0 , )( Então

,...,1,0 , e )( duração de )(

1

/

1

*

Propriedades da TFTD

1. Periodicidade : A TFTD é periódica em com período 2 . Isso

significa que basta analisar um período ([0,2 ] ou [- , ]) e não o

domínio inteiro - < < .

2. Simetria : Para seqüências reais, a TFTD é conjugada simétrica.

Ou seja, sua parte real e seu módulo possuem simetria par enquanto

que sua parte imaginária e sua fase possuem simetria ímpar. Como

conseqüência, no caso de seqüências reais, basta considerar meio

período da TFTD. Geralmente, este período é escolhido como sendo o

intervalo [0, ] .

*

Propriedades da TFTD

3. Linearidade : A Transformada de Fourier de Tempo Discreto é uma transformação

linear e portanto satisfaz o princípio da superposição.

4. Deslocamento no tempo : O deslocamento no domínio do tempo corresponde a uma

mudança de fase na TFTD.

5. Deslocamento em freqüência : A multiplicação por uma exponencial complexa

corresponde a um deslocamento no domínio da freqüência.

6. Espelhamento : O espelhamento (em torno do eixo vertical) corresponde também ao

mesmo espelhamento no domínio da freqüência.

7. Conjugação : A operação de conjugação no domínio do tempo corresponde ao

espelhamento e conjugação no domínio da freqüência.

8. Convolução : A convolução no domínio do tempo equivale a uma simples

multiplicação das respectivas TFTD. Esta é uma das mais úteis propriedades, que torna

conveniente a análise do sistema no domínio da freqüência

9. Diferenciação no domínio da freqüência : A diferenciação no domínio da freqüência

equivale a multiplicar por n o sinal no domínio do tempo.

*

Propriedades da TFTD

10. Multiplicação : Esta propriedade é dual da convolução. O símbolo * indica convolução periódica.

11. Energia : A energia de uma dada seqüência pode ser escrita como:

21

21

2

0

2

22

0 , )(

por dada é , banda na )( de energia a Portanto

)( :energia de espectral Densidade

. como conhecida é igualdade Esta

reais seqüências para

2

1)(

2

1

d

nx

eX

ParsevalTeorema de

deX

E

deXnxE

x

j

x

j

x

j

x

*

Representação de sistemas LIT no Domínio do Tempo e da

Freqüência

A transformada de Fourier é a forma de representação

mais útil para os sistemas LIT devido ao resultado mostrado na

transparência: A seqüência de saída é a seqüência exponencial de

entrada multiplicada pela transformada de Fourier da resposta

impulsiva na mesma freqüência da exponencial complexa.

Ou seja, a resposta de um sistema LIT a uma

exponencial complexa é também uma exponencial complexa com a

mesma freqüência da entrada, porém alterada por um fator

multiplicativo.

*

Resposta em Freqüência de Sistemas LIT

A TFTD da resposta em freqüência de um sistema LIT é

denominada Resposta em Freqüência ou Função de Transferência.

Se tivermos na entrada uma exponencial complexa, então a

seqüência de saída será a exponencial de entrada modificada pela

resposta do sistema na freqüência 0. Isto justifica a definição de H(ej )

como resposta em freqüência porque é o fator pelo qual a exponencial

complexa deve ser multiplicada para obter a saída.

Este poderoso resultado pode ser extendido para uma

combinação linear de exponenciais complexas usando o princípio da

superposição.

Em geral, a resposta em freqüência é uma função

complexa, e portanto pode ser representada por sua magnitude e fase,

como veremos a seguir.

*

Resposta a Seqüências Senoidais

Seja a entrada de um sistema LIT cuja

resposta impulsiva é . Então a resposta será uma outra

senóide com a mesma freqüência , com amplitude atenuada ou

amplificada por

e fase deslocada por . Este resultado pode ser

estendido para uma combinação linear de seqüências senoidais.

Esta resposta é denominada resposta estacionária a uma

entrada que corresponde a uma senóide eterna, porque ela foi aplicada

ao sistema desde . Neste caso não existe resposta transitória,

que ocorreria caso a senóide fosse aplicada em um instante de tempo

posterior.

)cos()( 00nAnx

)(nh )(ny

0

0jeH 0j

eH

n

*

Resposta a Seqüências Arbitrárias

Se uma dada seqüência absolutamente somável for

colocada na entrada de um sistema LIT, a TFTD do sinal na saída poderá

ser obtida simplesmente multiplicando-se a resposta em freqüência do

sistema pela TFTD da seqüência de entrada.

O sinal de saída no domínio do tempo poderá ser obtido

através da TFTD inversa. Porém, isso requer uma operação de

integração, que não é conveniente para ser implementada

computacionalmente (no MATLAB, por exemplo). Como veremos mais

adiante, existe uma abordagem alternativa para o caso de entradas

arbitrárias, usando a transformada Z e expansão em frações parciais.

*

Resposta em Freqüência a partir de Equações de Diferenças

Quando um sistema LIT é representado pela equação de

diferenças, para encontrar a expressão de sua resposta em freqüência,

deveríamos em princípio necessitar da expressão da sua resposta

impulsiva. No entanto, usando como entrada uma exponencial complexa,

podemos facilmente obter a expressão de sua resposta em freqüência a

partir da equação de diferenças, conforme foi mostrado na transparência.

A expressão da resposta em freqüência assim obtida pode

ser facilmente implementada no MATLAB, a partir dos parâmetros da

equação de diferenças, como veremos a seguir.

*

Implementação da Resposta em Freqüência no MATLAB

Na prática, as equações de diferenças são de ordem

elevada (maior que 2) e precisamos de um procedimento compacto para

implementar a expressão geral da resposta em freqüência no MATLAB.

Essa implementação pode ser feita por meio de simples

operações de multiplicação de matrizes. Para isso, vamos calcular a

expressão de em freqüências igualmente

espaçadas no intervalo [0, ].

Conforme mostra a transparência, a resposta em freqüência

assim calculada consiste no vetor H, que pode ser obtido usando a

operação ./ do MATLAB. Este procedimento pode ser facilmente

implementado em uma função no MATLAB, tendo como entrada os

vetores b e a.

KkeH j ,...,1,0 em

*

Amostragem de Sinais Analógicos

Na grande maioria das aplicações de processamento digital

de sinais, o que existe no mundo real é um sinal analógico que deve ser

convertido em um sinal discreto por meio das operações de amostragem

e quantização. Estes sinais assim discretizados são então submetidos a

um processador digital de sinais.

Usando a análise de Fourier, podemos descrever a

operação de amostragem no domínio da freqüência e analisar os seus

efeitos. Assumiremos em nossa abordagem que o número de níveis de

quantização é suficientemente grande para que o efeito da quantização

da amplitude dos sinais discretos possa ser desprezado.

Seja xa(t) um sinal analógico absolutamente integrável. A

sua Transformada de Fourier de tempo contínuo (TFTC) é dada pela

expressão de Xa(j ) conforme mostrada na transparência, onde é a

freqüência analógica em radianos por segundo. A Transformada Inversa

de Fourier de tempo contínuo é obtida através da integral cuja expressão

( xa(t) ) é apresentada na transparência.

*

Amostragem no Domínio da Freqüência

Vamos agora amostrar o sinal contínuo xa(t) a cada

intervalo de Ts segundos a fim de obter o sinal de tempo discreto discreto

x(n), de acordo com a definição da transparência. Seja X(e j ) a

Transformada de Fourier de tempo discreto (TFTD) de x(n). Pode ser

mostrado que a TFTD é uma somatória de versões de Xa(j ) deslocadas

em freqüência e escaladas em amplitude e freqüência, conforme a

expressão de X(e j ) apresentada na transparência.

As freqüências analógica e digital estão relacionadas por

meio do período de amostragem Ts, enquanto que a freqüência ou taxa

de amostragem é dada pelo seu valor inverso, como mostrado na

transparência.

*

*

Teorema da Amostragem

É possível recuperar a transformada de Fourier Xa(j ) a partir de X(e j )

(ou de maneira equivalente, recuperar o sinal analógico xa(t) a partir de suas amostras

x(n) ), se as infinitas “réplicas” de Xa(j ) não se sobrepuserem umas às outras para

formar X(ω).

Isso somente será possível para sinais analógicos limitados em

freqüência, isto é, se existir uma freqüência 0 (em radianos) tal que Xa(j ) seja zero

para | | > 0. Em hertz, a freqüência F0 = 0 /2 é chamada de largura de faixa do

sinal xa(t).

Podemos então formular o Teorema da Amostragem (ou Teorema de

Nyquist) para sinais limitados em freqüência :

Um sinal analógico xa(t) com largura de faixa F0 poderá ser

reconstruído a partir de suas amostras x(n) = xa(nTs) se a freqüência de

amostragem Fs = 1 / Ts for maior que duas vezes a largura de faixa F0 de xa(t) :

Fs > 2F0 . Caso contrário, ocorrerá “aliasing” (sobreposição das réplicas

espectrais) e então o sinal analógico xa(t) não poderá ser recuperado a partir de

suas amostras x(n). A taxa de amostragem Fs = 2F0 é denominada de taxa de

Nyquist para o sinal xa(t).

*

*

Amostragem no MATLAB

Em sentido estrito não é possível analisar sinais analógicos

usando o MATLAB, a menos que seja usada a “toolbox “ Symbolic.

Entretanto, se o sinal xa(t) for amostrado a uma taxa muito superior à de

Nyquist e durante um tempo suficiente, então é possível simular

aproximadamente um sinal analógico.

Seja Ts um período de amostragem que obedeça ao teorema

de Nyquist. Façamos então uma “super-amostragem” do sinal xa(t) com um

intervalo t de tal forma que t << Ts . Então o vetor xG(m) = xa(m t) pode

ser usado para simular o sinal analógico xa(t). O período de amostragem Ts

não deve ser confundido com o intervalo t, que é usado unicamente para

representar um sinal analógico no MATLAB.

De forma similar, a transformada de Fourier de tempo contínuo

pode também ser aproximada pela expressão de Xa(j ) apresentada na

transparência. Esta expressão pode ser implementada no MATLAB de

maneira semelhante à TFTD. Podemos então usar o MATLAB para analisar

o fenômeno da amostragem de sinais analógicos.

*

*

A Transformada Z

Vimos anteriormente que podemos descrever sistemas LIT no

domínio da freqüência por meio da TFTD. Entretanto, há dois problemas com

relação à Transformada de Fourier: O primeiro é que existem muitos sinais digitais

úteis na prática (tais como o degrau unitário e a rampa) para os quais a TFTD não

existe. O segundo é que a resposta transitória de um sistema devida às condições

iniciais não pode ser obtida por meio da Transformada de Fourier.

Para resolver estes problemas, precisamos utilizar uma extensão da

TFTD denominada Transformada Z. Sua versão bilateral (de - a + ) proporciona

um outro domínio no qual uma grande classe de sinais e sistemas podem ser

analisados, enquanto que sua versão unilateral (de 0 a + ) pode ser usada para

obter a resposta de sistemas submetidos a determinadas condições iniciais.

A Transformada Z bilateral de uma seqüência é dada pela expressão

apresentada na transparência. O conjunto de valores para os quais a Transformada

Z existe é chamado de região de convergência (RC), definida no plano complexo

em termos da magnitude da variável complexa z.

A inversão da Transformada Z pode ser obtida por meio da integral

apresentada na transparência, muito embora esta expressão raramente seja

utilizada na prática, como veremos mais adiante.

*

Observações

1. A variável complexa z é chamada de freqüência

complexa, dada por z = |z|ej , onde a sua magnitude é denominada

atenuação e a variável que determina a sua fase é denominada

freqüência real.

2. A função |z| = 1 (ou z = ej ) é uma circunferência de raio

unitário no plano z, denominada circunferência unitária. Se a região de

convergência (RC) contém a circunferência unitária, então a

Transformada Z pode ser calculada para z = ej . Portanto, a

Transformada de Fourier de tempo discreto (TFTD) pode ser considerada

como um caso especial da Transformada Z.

3. Como a RC é definida em termos da magnitude |z|, o seu

formato é o de um anel aberto conforme ilustrado na transparência. Rx-

pode ser igual a zero e/ou Rx+ pode ser infinito. Se Rx+ < Rx- , a região de

convergência é um espaço nulo e a Transformada Z não existe.

*

Exemplo 1

A seqüência deste exemplo (ver transparência) é chamada

de positiva pois é definida somente para os índices de tempo maiores que

zero.

Muitas vezes, como neste exemplo, a Transformada Z é

uma função racional, com um polinômio em z no numerador e outro

polinômio no denominador. As raízes do numerador são chamadas de

zeros e as raízes do denominador são chamadas de pólos da

Transformada Z.

Neste exemplo, X1(z) possui um zero na origem z = 0 e um

pólo em z = a. Portanto, o sinal digital x1(n) pode ser representado por

um diagrama de pólos e zeros no plano complexo da variável z, onde os

zeros são denotados por „o‟ e os pólos por „×‟, conforme ilustrado na

figura da transparência.

*

Exemplo 2

A seqüência deste exemplo (ver transparência) é chamada

de negativa pois é definida somente para os índices de tempo menores

que zero.

A região de convergência (sombreada) e o diagrama de

pólos e zeros são mostrados na figura. É importante observar neste

exemplo e no anterior que, se b = a, então X2(z) = X1(z) exceto por suas

respectivas regiões de convergência, ou seja, RC1 RC2. Isto significa

que a RC é uma característica diferenciativa, que garante a unicidade da

Transformada Z . Portanto, é de fundamental importância na análise de

um sistema.

*

Exemplo 3

A seqüência deste exemplo (ver transparência) é chamada

de bilateral pois é definida para todos os índices de tempo.

Pela figura da transparência podemos perceber que se a

magnitude |b | < |a |, então RC3 seria um espaço nulo e a Transformada Z

X3(z) não existiria. Se |b | > |a |, então a região de convergência RC3 é |a

| < |z | < |b | e X3(z) existe nesta região (sombreada) conforme mostrado

na figura.

*

Propriedades da Região de Convergência (RC)

1. A região de convergência é sempre limitada por uma

circunferência, pois a condição de convergência é sempre na magnitude

da variável complexa z.

2. Um sinal digital que seja nulo para qualquer índice menor

que um certo valor (n0), é denominado seqüência à direita. Nesse caso, a

RC é sempre a região exterior a uma circunferência de raio Rx- (Rx- < |z| <

). Se n0 for maior ou igual a zero, então a seqüência à direita é também

causal.

3. Um sinal digital que seja nulo para qualquer índice maior

que um certo valor (n0), é denominado seqüência à esquerda. Nesse

caso, a RC é sempre a região interior a uma circunferência de raio Rx+ (0

< |z| < Rx+ ). Se n0 for menor ou igual a zero, então a seqüência à

esquerda é também anticausal.

*

Propriedades da Região de Convergência (RC)

4. No caso de seqüências bilaterais, a região de

convergência é sempre um anel aberto, se ele existir.

5. Um sinal digital que seja nulo para n < n1 e n > n2 é dito de

duração finita. A região de convergência para este tipo de sinal é o plano

z inteiro. Se n1 < 0, então a região de convergência não inclui o limite z

. Se n2 > 0, então o ponto z = 0 não está incluído na região de

convergência.

6. A região de convergência não pode incluir um pólo pois a

Transformada Z tende a infinito nestes pontos.

7. Existe pelo menos um pólo na fronteira da região de

convergência de uma Transformada Z racional.

8. A região de convergência é uma região contígua, isto é, a

RC não pode ser composta por partes separadas.

Para processamento de sinais em tempo real, as

seqüências são sempre causais. Nesse caso, as propriedades de maior

interesse são as de número 2 e 5.

*

Propriedades da Transformada Z

As propriedades da Transformada z são generalizações das

propriedades da Transformada de Fourier de Tempo Discreto já

estudadas anteriormente. Apresentamos aqui estas propriedades sem a

respectiva prova de cada uma delas, que pode ser encontrada na

referência n.º 2 da bibliografia indicada.

*

Propriedades da Transformada Z

A última propriedade transforma uma operação de convolução no

domínio do tempo em uma multiplicação entre duas funções. Esta é uma propriedade

significativa, sob diferentes aspectos.

Em primeiro lugar, se X1(z) e X2(z) são polinômios, então seu produto pode ser calculado usando-se a função conv do MATLAB.

Outro uso importante da propriedade de convolução é no cálculo da

resposta de um sistema, como veremos mais adiante. Esta interpretação é

particularmente útil para verificar a expressão da Transformada Z usando o MATLAB.

Como o MATLAB realiza somente processamentos numéricos, ele não

pode ser usado para calcular diretamente a expressão da Transformada Z. Vejamos

esta questão mais de perto: Seja x(n) uma seqüência cuja Transformada Z é uma

função racional X(z) , com numerador B(z) e denominador A(z), onde ambos são

polinômios em z-1. Se usarmos os coeficientes de B(z) e A(z) como sendo os vetores b e a na função filter do MATLAB e excitarmos este filtro com um impulso unitário

(n) , então a partir da propriedade n.º 8 e usando o fato de que Z [ (n) ] = 1, a saída

do filtro será x(n) (esta é uma abordagem numérica para calcular a Transformada Z

Inversa, veremos as abordagens analíticas mais adiante). Podemos então comparar

esta saída com a seqüência x(n) dada e verificar portanto que X(z) é realmente a

transformada de x(n) .

*

Tabela de Transformadas Z

Usando a definição da Transformada Z e suas propriedades,

podemos determinar a Transformada Z das seqüências mais comuns.

Uma lista de algumas destas seqüências e suas respectivas

transformadas e regiões de convergência é apresentada na

transparência.

*

Tabela de Transformadas Z

Usando a definição da Transformada Z e suas propriedades,

podemos determinar a Transformada Z das seqüências mais comuns.

Uma lista de algumas destas seqüências e suas respectivas

transformadas e regiões de convergência é apresentada na

transparência.

*

*

Inversão da Transformada Z

O obtenção da Transformada Z Inversa pela definição requer o

cálculo da integral sobre uma curva no plano complexo, que em geral é um

procedimento razoavelmente complicado.

Felizmente, existe uma abordagem mais prática, que é o método de

expansão em frações parciais. Este método faz uso da tabela de Transformadas Z

e requer que a função no domínio Z seja uma função racional. Esta restrição

geralmente não constitui nenhum problema em processamento digital de sinais.

A idéia central advém do fato de que, se X(z) é uma função racional

de z-1, ela pode ser expressa como uma soma de fatores de primeira ordem,

usando expansão em frações parciais. Uma vez realizada a expansão, as

seqüências correspondentes a cada um destes fatores pode ser facilmente obtida

usando a tabela de Transformadas Z.

A expansão em frações parciais pode também ser feita usando

potências positivas de z. Nesse caso, os resíduos obtidos serão diferentes

daqueles obtidos para potências negativas de z (Rm≠ Rk). Também a forma

analítica do x(n) obtido normalmente será diferente para os dois casos (potências

negativas ou positivas de z), porém elas com certeza serão equivalentes (as

amostras de x(n) serão iguais para os dois casos).

*

Inversão da Transformada Z

O método pode ser resumido da seguinte maneira:

1. Dada a função racional X(z), se o maior expoente (de z-1) do

numerador (M) for maior ou igual ao maior expoente do denominador (N) ,

é preciso realizar uma divisão polinomial, a fim de expressar X(z) como

soma de uma parte racional própria e uma parte polinomial.

2. Realizar uma expansão em frações parciais da parte racional própria,

obtendo os resíduos conforme ilustrado na transparência, para os casos

de pólos distintos e pólos múltiplos. Veremos mais adiante como fazer

isso usando o MATLAB.

3. Escrever a seqüência x(n) resultante conforme mostrado na

transparência, usando a tabela de Transformadas Z se necessário.

*

Implementação no MATLAB

Existe uma função do MATLAB chamada residuez que

pode ser usada para calcular os termos da parte residual e da parte direta

(polinomial) de uma função racional em z-1. O formato de entradas e

saídas desta função está mostrado na transparência. Tendo como entradas os vetores linha b e a, a função

retorna um vetor coluna R contendo os resíduos, outro vetor coluna p

contendo a localização dos pólos e um vetor linha C contendo os termos

diretos. Se existirem pólos múltiplos, eles serão repetidos dentro do vetor p.

Esta mesma função pode ser usada de maneira inversa: [b,a]=residuez(R,p,C); com 3 argumentos de entrada e 2 de saída,

converte uma expansão em frações parciais de volta para a forma racional, com os correspondentes coeficientes nos vetores linha b e a.

IMPORTANTE: A função residuez só pode ser usada na

obtenção dos resíduos para potências negativas de z!

*

Representação de sistemas no Domínio Z

De maneira semelhante à resposta em freqüência H(ej ),

podemos definir uma função no domínio Z, H(z), chamada função de

sistema. No entanto, diferentemente da resposta em freqüência, H(z)

pode existir também para sistemas que não são estáveis.

A função de sistema é por definição a Transformada Z da

resposta impulsiva. Usando a propriedade de convolução, a Transformada

Z da saída do sistema é dada por Y(z)= H(z)X(z) , sendo que sua região

de convergência será a interseção das regiões de convergência da

seqüência de entrada e da resposta impulsiva, desde que elas se

sobreponham parcialmente.

*

Função de Sistema a partir da

Representação por Equações de Diferenças

Quando um sistema linear invariante no tempo (LIT) é descrito por uma

equação de diferenças, a função de sistema H(z) pode ser facilmente obtida. Tomando

a Transformada Z de ambos os lados da equação de diferenças e usando algumas

propriedades, obtemos a função de sistema na forma racional, conforme ilustrado na

transparência. Após uma fatoração, pode-se obter a função de sistema no formato

onde os zl s são os zeros e os pk´s são os pólos do sistema. Portanto, um sistema LIT

pode ser representado no domínio Z por um diagrama de pólos e zeros, o que é muito

útil no projeto de alguns filtros digitais mais simples. Para determinar os zeros e pólos de uma função racional H(z), podemos usar a função roots do MATLAB para os

polinômios do numerador e do denominador. Também é possível usar o MATLAB para

plotar estas raízes no formato de um diagrama de pólos e zeros. A função zplane(b,a) plota os pólos e zeros a partir do vetores linha b e a (coeficientes

polinomiais do numerador e denominador, respectivamente). Outra forma de usar a mesma função é zplane(z,p) , onde os zeros e pólos são colocados nos vetores

coluna z e p. Portanto, é preciso prestar atenção ao formato dos argumentos de

entrada para usar adequadamente esta função do MATLAB.

N

k

k

M

l

lMN

N

NNN

M

MMM

pz

zz

zbazazz

b

b

b

zbzzb

zH

1

101

1

00

1

10

*

Função de Sistema e Resposta em Freqüência

Se a RC de H(z) inclui a circunferência unitária (z = ej ),

então podemos obter a partir da função de sistema H(z) a resposta em

freqüência (ou função de transferência) H(ej ).

Os fatores do numerador e do denominador (ver

transparência) podem ser interpretados como vetores no plano complexo,

e portanto podemos calcular a magnitude de H(ej ) como sendo um

produto das magnitudes dos vetores que têm origem nos zeros de H(z) e

terminam na circunferência unitária, dividido pelo produto das magnitudes

dos vetores que têm origem nos pólos de H(z) e terminam na

circunferência unitária, escalados por |b0|.

De forma similar, a fase da resposta em freqüência pode ser

interpretada como sendo a soma de um fator constante, de um fator de

fase linear e um fator de fase não-linear (soma dos ângulos dos “vetores

dos zeros” menos a soma dos ângulos dos “vetores dos pólos”).

*

Implementação no MATLAB

Vimos anteriormente como plotar a magnitude e fase da

resposta em freqüência de um sistema, implementando diretamente suas

formas funcionais. Porém, o MATLAB oferece uma função chamada freqz

para realizar esta operação, que usa a interpretação que acabamos de

ver. Na sua forma mais simples, esta função é chamada por [H,w]=freqz(b,a,N), que retorna w, o vetor de freqüências N-

dimensional, e o vetor complexo H da resposta em freqüência, também

N-dimensional. Os argumentos de entrada da função são os coeficientes

do numerador e do denominador de H(z), colocados nos vetores b e a,

respectivamente. A resposta em freqüência é calculada em N pontos

igualmente espaçados em torno da parte superior da circunferência

unitária. A segunda forma, [H,w]=freqz(b,a,N,´whole´), usa N

pontos em torno da circunferência unitária completa. Existe uma terceira forma, H=freqz(b,a,w), que retorna a resposta em freqüência

naqueles pontos designados pelo vetor de freqüências w, normalmente

entre 0 e . Há ainda uma quarta forma, freqz(b,a,...), sem retornar

nada, que plota em uma figura a magnitude (em dB) e a fase (em graus)

da resposta em freqüência.

*

Estabilidade e Causalidade

Para sistemas LIT, a estabilidade é equivalente a ter uma

resposta impulsiva absolutamente somável, como já foi visto

anteriormente. Se o sistema é estável, isto significa que ele possui uma

resposta em freqüência, o que por sua vez implica que a circunferência

unitária está contida na região de convergência da função de sistema

(Teorema 2 da transparência).

Para a causalidade de um sistema LIT é necessário que a

resposta impulsiva seja nula para os índices de tempo menores que zero

(seqüência causal). Isto implica que a região de convergência da função

de sistema deve estar fora de alguma circunferência de raio Rh-. No

entanto, esta não é uma condição suficiente pois qualquer seqüência à

direita possui uma RC semelhante. Entretanto, se um sistema é estável,

fica fácil verificar sua causalidade examinando sua resposta impulsiva.

*

Solução de Equação de Diferenças

Mencionamos anteriormente uma forma para a solução de

equações de diferenças lineares a coeficientes constantes, que consiste

em encontrar a resposta natural (com condições iniciais e sem sinal de

entrada) e a resposta forçada (sem condições iniciais e com sinal de

entrada).

Usando a Transformada Z, podemos agora utilizar um

método para a obtenção destas respostas. Além disso, discutiremos

outras formas para a solução de equações de diferenças: Solução

particular e solução homogênea, resposta transitória e resposta

estacionária.

Em processamento digital de sinais, as equações de

diferenças geralmente referem-se apenas a índices de tempo positivos

(sistemas causais). Para este propósito, definimos uma outra versão da

Transformada Z denominada de unilateral (ver transparência).

Aplicando a propriedade de deslocamento à Transformada Z

unilateral, obtemos um resultado (ver transparência) que nos será útil

para resolver equações de diferenças sujeitas a condições iniciais não

nulas.

*

Solução de Equação de Diferenças

Vamos demonstrar um método para solucionar equações de

diferenças usando um exemplo:

)(4

1

3

1

3

2

2

1)(

111

1)(

obtemos parciais frações em Expandindo

111

2

1

211

1

)(

temosdo,rearranjan e iniciais condições as doSubstituin

1

1)()1()2(

2

1)()1(

2

3)(

obtemos to,deslocamen de epropriedad a usando e diferenças

de equação da lados dois aos unilateral ZdaTransforma a Aplicando

:

10)2( e 4)1( iniciais condições as com

)(4

1)( onde

0 , )()2(2

1)1(

2

3)(Resolver

1

41

31

1

32

1

21

1

4111

21

2

211

49

2

211

23

1

1

41

1

41

211

nunyzzz

zY

zzz

zz

zz

zz

zY

zzYzyzyzYzyzY

Solução

yy

nunx

nnxnynyny

nn

n

*

Formas das Soluções

No exemplo da transparência vemos primeiramente a

resposta completa da solução da equação de diferenças, que pode ser

expressa de diversas formas:

• Resposta homogênea e resposta particular: A resposta homogênea é

devido aos pólos do sistema e a resposta particular é devida aos pólos do

sinal de entrada.

• Resposta transitória e resposta estacionária: A resposta transitória é

devida aos pólos que estão no interior da circunferência unitária,

enquanto que a resposta estacionária é devida aos pólos que estão na

fronteira da circunferência unitária (em cima da linha da circunferência, se

existirem). A resposta correspondente aos pólos que estão fora da

circunferência unitária (se existirem) é chama de resposta ilimitada.

*

Formas das Soluções

• Resposta natural e resposta forçada: A resposta natural é a resposta do

sistema com condições iniciais e sem sinal de entrada. Pelo exemplo da

transparência, podemos notar que nesse caso sempre será possível

encontrar a expressão (no domínio Z) de uma “entrada” equivalente às

condições iniciais, XCI (z), capaz de gerar a mesma saída devida às

condições iniciais.

A resposta forçada é a resposta do sistema sem condições

iniciais e com sinal de entrada. No exemplo da transparência, basta

eliminar a expressão de XCI (z) e adicionar a expressão da Transformada

Z correspondente ao sinal de entrada, X(z).

*

Implementação no MATLAB

A função filter do MATLAB pode ser usada para resolver equações de

diferenças, dados os seus coeficientes e o sinal de entrada (sem condições iniciais).

Esta função pode ser também utilizada para encontrar a resposta completa quando estão presentes as condições iniciais. Neste caso a função função filter deve ser

chamada por y = filter(b,a,x,xci), onde xci é o vetor correspondente à

entrada equivalente às condições iniciais (no domínio do tempo). Por exemplo, se quiséssemos usar a função filter do MATLAB para resolver a equação de

diferenças do exemplo que acabamos que ver, teríamos que digitar: >> a = [1 -1.5 0.5]; b = [1]

>> n = [0:7]; x = (1/4).^n; xci = [1 -2];

>> y = filter(b,a,x,xci);

Entretanto, na prática muitas vezes as equações de diferenças são de ordem elevada, e nesses casos seria extremamente tedioso determinar o vetor xci

analiticamente. Por isso o MATLAB provê uma função chamada filtic, disponível no

Signal Processing Toolbox, que pode ser chamada pela linha de comando xci =

filtic(b,a,Y,X), onde Y,X são os vetores correspondentes às condições iniciais

na sua forma direta (ver transparência). No exemplo anterior teríamos: >> Y = [4, 10]; xci = filtic(b,a,Y); e a resposta seria xci = 1 -2

*

*

A Série Discreta de Fourier

Vimos anteriormente a definição de uma seqüência

periódica com período fundamental N (ver transparência). Sabemos da

análise de Fourier que as funções periódicas podem ser sintetizadas

como uma combinação linear de exponenciais complexas cujas

freqüências são múltiplos (ou harmônicas) da freqüência fundamental

(que no nosso caso é 2 /N ).

A partir da periodicidade da TFTD no domínio da freqüência,

concluímos que existe um número finito de harmônicas, que são { (2

/N)k , k=0,1,...,N-1 }. Portanto, uma seqüência periódica pode ser

expressa na forma indicada na transparência (equação de síntese), por

meio dos coeficientes da série de Fourier. A maneira de calcular os

coeficientes é dada pela fórmula de análise (ver transparência).

*

A Transformada Discreta de Fourier (TDF)

A análise dos sinais discretos no domínio da freqüência é

usualmente realizada de forma computacional. Sabemos que a

representação de um sinal discreto no domínio da freqüência é feita pela

Transformada de Fourier de Tempo Discreto (TFTD).

No entanto, a TFTD é uma função contínua e portanto não é

uma forma computacionalmente eficiente de representação. Vamos

considerar então uma representação feita por meio da amostragem do

espectro X( ) do sinal discreto x(n) (amostragem no domínio da

freqüência). Este tipo de representação no domínio da freqüência nos

conduzirá até a Transformada Discreta de Fourier (TDF), que é uma

poderosa ferramenta computacional para a realização da análise de sinais

discretos no domínio da freqüência.

Antes de introduzirmos a TDF, vamos considerar a

amostragem da TFTD de uma seqüência x(n) de energia finita.

Suponhamos que amostremos X( ) com um espaçamento de

radianos entre amostras sucessivas. Como X( ) é periódica com período

2 , somente são necessárias amostras no intervalo [0, 2 ]. Por

conveniência, tomaremos N amostras eqüidistantes no intervalo [0, 2 ],

ou seja, faremos = 2 /N, obtendo a expressão mostrada na

transparência.

*

A Transformada Discreta de Fourier

A somatória correspondente à amostragem da TFTD pode

ser subdividida em um número infinito de somatórias, cada uma delas

contendo N termos (ver transparência). Trocando o índice da somatória

interna de n para n - lN e trocando a ordem das somatórias, obtemos o

resultado mostrado na transparência.

Chegamos a um sinal que é obtido pela repetição periódica

de x(n) a cada N amostras, que é claramente periódico com período

fundamental N.

*

A Transformada Discreta de Fourier

Um sinal periódico pode ser expandido em série de Fourier

conforme mostrado na transparência. Comparando as expressões obtidas

para o sinal periódico, chegamos à relação indicada na transparência, que

nos mostra que o sinal periódico pode ser obtido por meio das amostras

da TFTD X( ) do sinal original x(n).

Porém, isto não implica em que podemos recuperar X( ) ou

x(n) a partir das amostras. A fim de chegar a isso, teremos que considerar

a relação entre o sinal periódico e o sinal x(n):

Como o sinal periódico é uma extensão de x(n) dada pela

expressão acima, é claro que x(n) pode ser recuperado a partir do sinal

periódico desde que não haja “aliasing” (sobreposição) no domínio do

tempo, ou seja, se a seqüência x(n) for limitada no tempo, ocupando um

intervalo de tempo menor que o período N do sinal periódico, conforme

será ilustrado na próxima transparência.

l

lNnxnx )()(~

*

A Transformada Discreta de Fourier

Na ilustração da transparência, sem perda de generalidade,

consideramos uma seqüência de duração finita x(n), que é não-nula no

intervalo 0 n L -1. Observamos que, quando N L, o sinal x(n) pode

ser recuperado a partir do sinal periódico sem ambigüidade. Por outro

lado, se N < L, não é possível recuperar x(n) a partir de sua extensão

periódica devido ao efeito de “aliasing” (sobreposição) no domínio do

tempo.

Portanto, concluímos que o espectro de uma seqüência de

duração finita L, pode ser completamente recuperado a partir de suas

amostras nas freqüências k = 2 k /N, se tomarmos N L . Para

consegui-lo, basta recuperar x(n) a partir de sua extensão periódica

(conforme expressão da transparência anterior) e finalmente obter a

TFTD X( ) do sinal original x(n).

*

A Transformada Discreta de Fourier (TDF)

Seja uma seqüência de duração finita x(n), que é não-nula

somente no intervalo 0 n L -1. A operação de amostragem (no

domínio da freqüência) de X( ) (TFTD de x(n)) em N ( N > L ) pontos

igualmente espaçados, produz uma seqüência X(k) de comprimento N

que é denominada Transformada Discreta de Fourier (TDF) de x(n),

conforme expressão da transparência.

A operação de recuperação de x(n) a partir de X(k) é

denominada Transformada Discreta de Fourier Inversa (TDFI) de X(k).

É importante notar que é necessário preencher com zeros o

intervalo L n N. Preencher a seqüência { x(n) } com N - L zeros e

calcular a TDF de N pontos resulta em uma melhor representação

(amostragem mais acurada) do espectro X( ).

*

Implementação da TDF e TDFI no MATLAB

Uma implementação conveniente da TDF e TDFI no

MATLAB pode ser feita por meio de multiplicações de matriz por vetor,

para cada uma das expressões das respectivas transformadas (direta e

inversa), do mesmo modo como usamos anteriormente para implementar

a TFTD.

Sejam x e X os vetores coluna correspondentes às

seqüências x(n) e X(k), respectivamente. Então a TDF e a TDFI podem

ser calculadas por meio das expressões indicadas na transparência, onde

WN , conforme definida na transparência, é denominada de matriz da

TDF. Para implementar a TDFI, devemos usar a matriz conjugada da

matriz WN.

Lembramos no entanto que esta implementação não é

computacionalmente eficiente, especialmente para valores grandes de N.

Trataremos desta questão mais adiante quando estudarmos a

Transformada Rápida de Fourier.

*

Propriedades da TDF

Antes de adentrarmos nas propriedades da TDF

propriamente ditas, precisamos estabelecer uma notação para melhor

exprimirmos algumas destas propriedades. Primeiramente, não podemos

esquecer que a TDF somente opera sobre seqüências x(n) de duração

finita, que possuem uma extensão periódica conforme já vimos (ver

transparência). No entanto, a necessidade de utilizar a somatória torna

incômoda este tipo de notação, por isso definimos a operação módulo-N e

a operação de janelamento, conforme mostrada na transparência. Estas

duas operações nos mostram como passar da seqüência x(n) para a sua

extensão periódica e vice-versa, e nos serão úteis para exprimirmos e

compreendermos as propriedades da TDF.

*

Propriedades da TDF

1. Periodicidade: A periodicidade da TDF e da TDFI decorrem imediatamente da

periodicidade da TFTD e do processo de amostragem no domínio da freqüência,

respectivamente.

2. Linearidade: A TDF é uma transformação linear e portanto pode-lhe ser aplicado o

princípio da superposição. Observemos no entanto que, se x1(n) e x2(n) tiverem

durações N1 e N2 respectivamente, então é preciso tomar N3 = max(N1, N2 ) e realizar

TDF‟s de N3 pontos para todas as seqüências.

3. Espelhamento circular: Se uma seqüência de N pontos é espelhada, então o

resultado x(-n) pode não ser uma seqüência de N pontos, e por este motivo talvez

não seja possível calcular sua TDF. Por isso utilizamos a operação módulo-N no

argumento e assim obtemos o chamado espelhamento circular, conforme mostrado

na transparência. Para visualizar isso, basta lembrar que as amostras do espectro

que compõe a TDF pertencem à circunferência unitária, de modo que as amostras

correspondentes aos índices k = 0 e k = N se sobrepõe, daí a denominação circular

para esta e outras propriedades que veremos a seguir.

4. Conjugação: A TDF do conjugado de uma seqüência é igual ao conjugado da TDF

submetido à operação de espelhamento circular.

*

Propriedades da TDF

5. Simetria de seqüências reais: Se x(n) é uma seqüência real, então o

seu conjugado é idêntico a ela mesma. Portanto, usando a propriedade

de espelhamento circular teremos que X(k) = X*((-k))N . Esta propriedade

é chamada de simetria circular conjugada e implica em uma simetria

circular par para a parte real e a magnitude de X(k), e uma simetria

circular ímpar para a parte imaginária e a fase de X(k). A principal

conseqüência prática desta propriedade é que basta calcular a TDF até

N/2 para N par ou então (N - 1)/2 para N ímpar.

*

Propriedades da TDF

6. Deslocamento circular no tempo: Se uma seqüência de N pontos for

deslocada em qualquer direção, então a seqüência resultante não mais estará

no intervalo 0 n N -1. Portanto, precisamos primeiro converter a seqüência

x(n) para a sua extensão periódica e então fazer o deslocamento, ou seja, o

deslocamento deve ser circular. Este deslocamento circular no domínio do

tempo provoca uma defasagem no domínio da freqüência (ver transparência).

7. Deslocamento circular no domínio da freqüência: Esta propriedade é a dual

da anterior e mostra que a multiplicação de um sinal x(n) por uma exponencial

complexa provoca um deslocamento circular da TDF X(k) no domínio da

freqüência.

8. Convolução circular: Uma convolução linear entre duas seqüências de

duração N resultará em uma seqüência mais longa. Mais uma vez teremos que

restringir-nos ao intervalo 0 n N -1 e portanto em lugar de um

deslocamento linear teremos que realizar um deslocamento circular. Uma

operação de convolução que utiliza um deslocamento deste tipo é chamada de

convolução circular, definida pela expressão indicada na transparência. É

importante observar que o resultado da convolução circular é também uma

seqüência de duração N, e o seu efeito no domínio da freqüência é

simplesmente a multiplicação das respectivas TDF‟s.

*

Propriedades da TDF

9. Multiplicação: Esta propriedade é a dual da propriedade de convolução

circular, dada pela expressão da transparência. Neste caso a convolução

é realizada no domínio da freqüência.

10. Relação de Parseval: Esta relação mostra que a energia total de uma

seqüência pode ser calculada tanto no domínio do tempo quanto no

domínio da freqüência, por meio da sua TDF.

*

Convolução Linear Usando a TDF

Uma das mais importantes operações em sistemas lineares

é a convolução linear. De fato, os filtros digitais FIR são geralmente

implementados na prática usando esta convolução linear. Por outro lado,

a TDF representa um modo prático e eficiente (especialmente se usarmos

a sua verão rápida, como veremos mais adiante) de implementar

operações de sistemas lineares no domínio da freqüência. Entretanto, a

multiplicação das TDF‟s resultam em uma convolução circular no domínio

do tempo, e não em uma convolução linear como desejaríamos. Veremos

agora como usar a TDF para realizar uma convolução linear.

Sejam x1(n) e x2(n) duas seqüências de durações N1 e N2

respectivamente. Se escolhermos a duração maior para realizar uma

convolução circular, obteremos uma duração resultante diferente de

(N1+N2 - 1), que seria a duração da seqüência resultante caso fosse

efetuada uma convolução linear (ver transparência). Vamos escolher

então o valor de N = N1+N2 - 1 para realizar a convolução circular. De

acordo com o desenvolvimento mostrado na transparência, chegamos à

conclusão que nesse caso a convolução circular é equivalente à

convolução linear para 0 n N -1.

*

Filtragem Digital FIR Usando a TDF

Seja um sinal x(n) de duração L colocado na entrada de um

filtro digital de resposta impulsiva de duração finita (FIR) de ordem M. O

sinal y(n) na saída do filtro poderá ser expresso como a convolução linear

de x(n) e h(n), onde h(n) é a resposta impulsiva do filtro, com duração de

M amostras. A duração de y(n) será L + M - 1.

Portanto, se multiplicarmos as TDF‟s de N = L + M - 1

pontos dos sinais x(n) e h(n), obteremos a TDF de y(n), conforme

mostrado na transparência. Para realizar esta operação, teremos de

aumentar a duração de x(n) e h(n) (preenchendo com zeros) para N

amostras. Como veremos mais adiante, para valores grandes de N, este

método é computacionalmente mais eficiente do que realizar diretamente

a convolução linear.

*

A Transformada Rápida de Fourier (FFT)

A TDF é a única transformada discreta nos dois domínios, do tempo e da

freqüência, e é definida para seqüências de duração finita. Por isso ela é

computacionalmente implementável. No entanto, para valores grandes de N , sua

implementação torna-se muito ineficiente. Em 1965, Cooley e Tukey descobriram um

procedimento para reduzir substancialmente o número de operações de cálculo

necessárias para realizar a TDF. Isto levou a uma explosão de aplicações da TDF,

principalmente na área de processamento digital de sinais. Posteriormente foram

desenvolvidos outros algoritmos eficientes, que ficaram conhecidos como Fast Fourier

Transform - FFT.

Para obter uma amostra da TDF, precisamos fazer N multiplicações

complexas e (N -1) adições complexas. Para obter a TDF completa, temos portanto de

realizar N2 multiplicações complexas e aproximadamente o mesmo número de adições

complexas (ver transparência). Além disso, é preciso armazenar N2 coeficientes complexos

{ WNnk }. O número de operações matemáticas de uma TDF de N pontos cresce

quadraticamente com N, o que torna-se inaceitável na prática para valores grandes de N.

Geralmente, o tempo de processamento para uma adição é muito menor do que para uma

multiplicação. Portanto, vamos nos concentrar no número de multiplicações complexas,

pois a implementação de cada uma delas requer a realização de 4 multiplicações e 2

adições de números reais.

Uma primeira redução no tempo de processamento pode ser obtida

lembrando a propriedade de simetria da TDF com relação a N /2, conforme mostrado na

transparência.

*

A Técnica “Dividir e Combinar”

A fim de reduzir o crescimento quadrático do número de

operações matemáticas, podemos escolher um valor de N tal que N = LM,

de modo que L2 + M2 << N2 para valores grandes de N. Agora dividimos a

seqüência completa em M seqüências de comprimento L, calculamos M

TDF‟s de L pontos cada uma e combinamos as mesmas em uma TDF de

M pontos. Esta é, em linhas gerais, a técnica “dividir e combinar”, que

pode ser matematicamente descrita conforme mostra a transparência.

*

A Técnica “Dividir e Combinar”

A técnica “dividir e combinar” pode ser implementada em um

procedimento com três passos, conforme mostrado na transparência. O

número total de multiplicações complexas, para um valor grande de N,

será inferior a N2.

Este procedimento pode ser repetido mais de uma vez, caso

M ou L não sejam números primos. É evidente que, quanto mais divisível

for o número N, mais vezes poderá ser aplicada a técnica “dividir e

combinar”, e portanto mais computacionalmente eficiente será este

procedimento. Se N = A , o algoritmo é denominado de base A . Quando

N = A B C . . . , então estas decomposições são chamadas de

algoritmos de FFT de bases mistas.

*

Algoritmo de FFT de Base 2

Neste caso, N é uma potência de 2 (N = 2 ) e escolhemos

M = 2 e L = N / 2. A seqüência x(n) é então dividida em duas seqüências,

cada uma com N / 2 pontos. A seqüência g1(n) contém as amostras de

índice par (ver transparência) enquanto que a seqüência g2(n) contém as

amostras de índice ímpar. Obtemos então a TDF X(k) como composição

das TDF‟s de g1(n) e g2(n), conforme mostrado na transparência. Este

procedimento pode ser repetido vezes, até que tenhamos N seqüências

de um ponto cada uma, e então calculamos a N TDF‟s de um ponto e as

combinamos conforme o algoritmo descrito anteriormente. Este processo

é chamado de dizimação no tempo, que nos conduz a um número total de

multiplicações complexas igual a Nlog2N.

Para valores grandes de N, o número de multiplicações

complexas é aproximadamente linear com relação a N, e portanto obtém-

se um algoritmo computacionalmente muito eficiente. Usando a

propriedade de simetria, podemos baixar este número para (N /2)log2N.

*

Implementação no MATLAB

O MATLAB possui uma função chamada fft, que calcula a

TDF de um vetor x e pode ser usada conforme indicado na transparência.

Esta função é escrita em linguagem de máquina e não por meio dos comandos do MATLAB, (ou seja, não existe o arquivo fft.m) e portanto

sua execução é muito rápida.

Se N for uma potência de 2, então um algoritmo de base 2

de alta velocidade é empregado. Caso contrário, o valor de N é

decomposto em fatores primos e então utiliza-se um algoritmo de FFT de

bases mistas, não tão veloz quanto o de base 2. Por fim, caso N seja um número primo, então a função fft é implementada através da TDF

convencional, que é extremamente ineficiente para valores grandes de N.

*

Convolução Rápida

A função conv no MATLAB é implementada usando a

função filter (que é escrita em linguagem “C”) e é bastante eficiente

para N < 50. Para valores de N maiores, é possível aumentar a

velocidade da convolução usando o algoritmo de FFT. Esta técnica usa a

convolução circular para implementar a convolução linear, e a FFT para

implementar a convolução circular. Esta operação é denominada de

algoritmo de convolução rápida.

Se escolhermos N como uma potência de 2, então o

algoritmo passa a ser denominada convolução de alta velocidade. Para

implementá-lo, basta tomar um valor de N adequado conforme mostrado

na transparência. A Convolução linear x1(n) * x2(n) pode então ser

implementada por meio de 2 FFT‟s de N pontos, um produto ponto a

ponto de 2 vetores de dimensão N e uma IFFT de N pontos.