Upload
andre-calemi
View
48
Download
3
Embed Size (px)
Citation preview
*
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.