Você está na página 1de 7

Anlise Espectral

DTFT: Transformada de Fourier discreta no tempo


j

X (e ) =

x ( n)e

j n

n =

X (e j ) : funo peridica com perodo 2

DFT: Transformada Discreta de Fourier discreta


N 1

X ( k ) = x ( n )e

2
kn
N

n =0

, k = 0,1,K , N 1

Relaco entre a DTFT e a DFT:


X (k ) = X (e j ) |

2
k
N

FFT: Algoritmo rpido para calcular DFT

Interpolao espectral (zero padding):


Acrescenta-se zeros no final da sequncia e calcula-se DFT de tamanho
maior do que o comprimento da sequncia original.

Vazamento (leakage):
Quando uma componente espectral tem frequncia no mltipla de 2/N,
esta componente aparece em mais de um bin da DFT.

Janelamento (windowing):
Para reduzir o efeito de vazamento, multiplica-se o sinal por uma sequncia
(janela) que decai suavemente para zero no incio e no final do intervalo
observado.
Janelas mais comuns: Hamming, Hanning, Blackman, Kaiser.
Obs.: H perda de resoluo para componentes prximas quando utiliza-se
uma janela.

Exemplo (MATLAB): Anlise de um sinal composto de trs senides usando


DFT e janelas
n=[0:31];
x=sin(2*pi*4.5*n/32)+sin(2*pi*6.5*n/32)+0.02*sin(2*pi*13*n/32);
0

xh=x.*hanning(32)';
xb=x.*blackman(32)';

Retangular
Hanning
Blackman

-10

k=[0:31];
k=k/16;
X=fft(x,32);
Xh=fft(xh,32);
Xb=fft(xb,32);

dbh=20*log10(abs(Xh));
dbh=dbh-max(dbh);
dbb=20*log10(abs(Xb));
dbb=dbb-max(dbb);

Amplitude (dB)

db=20*log10(abs(X));
db=db-max(db);

-20
-30
-40
-50
-60
-70

plot(k,db,k,dbh,k,dbb)
xlabel('Frequncia digital normalizada');
ylabel('Amplitude (dB)');
legend('Retangular','Hanning','Blackman')

-80

0.2

0.4

0.6
0.8
1
1.2
1.4
Frequncia digital normalizada

1.6

1.8

Anlise Espectral para Sinais No Estacionrios:

Short Time Fourier Transform (STFT):


R 1

X STFT (k , lL) = x(lL m) w(m)e


m=0

2
km
N

, k = 0,K , N 1

Multiplica-se x(n) por uma sequncia (janela) w(n) de durao finita


M
RN ;
Calcula-se a transformada de Fourier da sequncia resultante
x(n).w(n);
Multiplica-se x(n) pela janela transladada de L amostras w(n-L);
Calcula-se a transformada de Fourier da sequncia resultante
x(L-n).w(n);

Exemplo (MATLAB): Anlise de um sinal chirp usando a STFT


%S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT,Fs)
%EXAMPLE: Compute the spectrogram of a linear chirp plus a sinusoide.
t=0:0.001:2;
% 2 secs @ 1kHz sample rate
y=chirp(t,0,1,250)+sin(100*2*pi*t);
% chirp starts @ DC, cross 250Hz at t=1sec
% sinusoide of 100 Hz frequency
plot(y)
pause
spectrogram(y,256,128,512,1E3); % Display the spectrogram
pause
s=spectrogram(y,256,128,512,1E3);
mesh(abs(s))% Display the spectrogram em 3D

80
1.6

60

1.4

40

Time

1.2

20

0
15

0.8
0.6

10

0.4

0.2

0
0

50

100

150

200
250
300
Frequency (Hz)

350

400

450

500

300

250

200

150

100

50

Anlise Espectral para Sinais Randmicos:

Periodograma (Mtodo de Welch):

1
X% (k ) =
M

M 1

X
l =0

STFT

(k , lL)

Calcula-se a STFT de M trechos de tamanho R do sinal x(n); estes


trechos podem ter sobreposio de R-L amostras;
Calcula-se a mdia das STFTs, obtendo-se o periodograma do sinal.

Exemplo (MATLAB): Periodograma de um sinal composto de


duas senides e rudo branco aditivo
Anlise espectral via FFT
0

M=1024;
k=[0:M/2];
k=k/M*2;
Xh=fft(xh,M);

Amplitude (dB)

-10

n=[0:2095];
N=length(n);
x=sin(2*pi*4.5*n/32)+0.2*sin(2*pi*13*n/32)+randn(1,N);
xh=x.*hanning(N)';
xb=x.*blackman(N)';

-20

-30

-40

-50

0.2
0.4
0.6
0.8
Frequncia digital normalizada

dbh=20*log10(abs(Xh(1:M/2+1)));
dbh=dbh-max(dbh);

Power Spectral Density Estimate via Welch

plot(k,dbh)
xlabel('Frequncia digital normalizada');
ylabel('Amplitude (dB)');
figure
pwelch(x,hanning(256),128,2096)

Power/frequency (dB/rad/sample)

15

10

-5

-10

0.1

0.2

0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)

0.9

Você também pode gostar