apresentação do powerpointmariane/cap13_slides.pdf · 1.6 1.8 frequency (hz) linear chirp: start...
TRANSCRIPT
Análise Espectral
Uma aplicação importante dos métodos de processamento digital de
sinais é na determinação do conteúdo em frequência de um sinal
contínuo
Análise espectral: determinação do espectro de energia ou espectro
de potência do sinal (PSD – Power Spectral Density)
Dado um sinal analógico 𝑥𝑎(𝑡), limitado em frequência, este é
convertido para um sinal digital 𝑥 𝑛 , assumindo-se que o efeito de
aliasing pode ser ignorado e que a precisão do conversor é
suficiente para que efeitos de quantização sejam desprezíveis
A DFT (calculada de forma rápida pela FFT) pode ser usada para a
análise espectral de sinais de comprimento finito
Análise Espectral
Neste caso, obtemos as amplitudes e fases de cada componente
senoidal do sinal 𝑥 𝑛 , ou seja:
𝑥 𝑛 =1
𝑁 𝑋 𝑘 𝑒𝑗
2𝜋𝑁 𝑘𝑛
𝑁−1
𝑘=0
Se 𝑥 𝑛 for real:
𝑥 𝑛 =1
𝑁𝑋 0 +
2
𝑁 𝑋 𝑘 cos
2𝜋
𝑁𝑘𝑛 + ∠𝑋 𝑘
𝑁/2
𝑘=1
Para aumentar a resolução, pode-se fazer uma interpolação
espectral, acrescentando-se zeros no final da sequência e
calculando-se uma DFT de tamanho maior do que o seu
comprimento.
Análise Espectral
Exemplo de interpolação:
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-40
-30
-20
-10
0
10
20
30
40
Frequência digital normalizada
Am
plit
ude (
dB
)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-40
-20
0
20
40
Frequência digital normalizada
Am
plit
ude (
dB
)
N=32
N=128
n=[0:31];
x=sin(2*pi*7*n/32)+0.2*sin(2*pi*13*n/32)+
0.01*randn(1,32);
X=fft(x);
Xdb=20*log10(abs(X));
subplot(2,1,1);
plot(n/16,20*log10(abs(X)))
xlabel('Frequência digital normalizada')
ylabel('Amplitude (dB)');
legend('N=32')
axis([0 2 -40 40])
Xi=fft(x,128);
k=[0:127];
Xidb=20*log10(abs(Xi));
subplot(2,1,2);
plot(k/64,20*log10(abs(Xi)),'r')
xlabel('Frequência digital normalizada')
ylabel('Amplitude (dB)');
legend('N=128')
axis([0 2 -40 40])
Análise Espectral
Efeito de “vazamento” (leakage): Quando uma componente senoidal
tem frequência não múltipla de 2𝜋/𝑁, sendo 𝑁 o comprimento da
sequência, devido a não haver um número inteiro de períodos desta
componente
Exemplo:
n=[0:31];
x=sin(2*pi*4*n/32)+sin(2*pi*6*n/32)+0.05*sin(2*pi*13*n/32);
X=fft(x);
subplot(2,1,1); stem(n/16,abs(X))
xlabel('Frequência digital normalizada')
ylabel('Amplitude (dB)');
legend('X')
axis([0 2 -5 20])
x2=sin(2*pi*4.5*n/32)+sin(2*pi*6.5*n/32)+0.02*sin(2*pi*13*n/32);
X2=fft(x2);
subplot(2,1,2); stem(n/16,abs(X2),'r')
xlabel('Frequência digital normalizada')
ylabel('Amplitude (dB)');
legend('X2')
axis([0 2 -5 20])
Análise Espectral
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-5
0
5
10
15
20
Frequência digital normalizada
Am
plit
ude (
dB
)
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-5
0
5
10
15
20
Frequência digital normalizada
Am
plit
ude (
dB
)
X
X2
Análise Espectral
Para reduzir o efeito de “vazamento”, multiplica-se o sinal por uma
janela, que decai suavemente no início e no final do intervalo de
observação do sinal
Janelas mais usadas: Hamming, Hanning, Blackmann e Kaiser
Com o emprego de janelas:
Haverá perda de resolução para diferenciar componentes de
frequências próximas, devido ao aumento da largura do lóbulo
principal da janela (em relação à janela retangular); para
aumentar resolução é necessário aumentar o comprimento da
janela (intervalo de observação)
Aumentará a discriminação de componentes mais fracas na
presença de componentes mais fortes, devido à diminuição dos
lóbulos secundários (em relação à janela retangular)
Análise Espectral
Exemplo de vazamento e do uso de janelas:
x=sin(2*pi*4.5*n/32)+sin(2*pi*6.5*n/32)+0.02*sin(2*pi*13*n/32);
xh=x.*hanning(32); xb=x.*blackman(32);
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-80
-70
-60
-50
-40
-30
-20
-10
0
10
Frequência digital normalizada
Am
plit
ude (
dB
)
Retangular
Hanning
Blackman
Análise Espectral de Sinais Não Estacionários
Os parâmetros das componentes senoidais (amplitude, fase e/ou
frequência) do sinal são variantes no tempo
Sinais de voz, de radar e de sonar são exemplos de sinais não
estacionários
Exemplo: sinal chirp
𝑥 𝑛 = 𝐴𝑐𝑜𝑠 𝜔0𝑛2
obtido do sinal contínuo 𝑥(𝑡) = 𝐴𝑐𝑜𝑠 𝜔0𝑡2 = 𝐴𝑐𝑜𝑠 𝜙(𝑡) .
A frequência instantânea de 𝑥(𝑡) é 𝑑𝜙(𝑡)
𝑑𝑡= 2𝜔0𝑡 (linear com o
tempo).
Análise Espectral de Sinais Não Estacionários
Podemos analisar trechos de um sinal não estacionário, multiplicando-o
por uma janela 𝑤(𝑛) e deslocando-o em relação à janela
À cada subsequência resultante, é aplicada uma DFT, gerando uma
transformação denominada STFT
A STFT (Short-Time Fourier Transform) é definida como
𝑋𝑆𝑇𝐹𝑇 𝑘,𝑚 = 𝑥 𝑚𝐿 + 𝑛 𝑤[𝑛]𝑒−𝑗2𝜋𝑘𝑛𝑁
𝑁−1
𝑛=0
, 0 ≤ 𝑘 ≤ 𝑁 − 1
Função de duas variáveis:
𝑘: índice correspondente à frequência 𝜔𝑘 =2𝜋𝑘
𝑁
𝑚: índice correspondente ao deslocamento da janela de
observação de 𝑚𝐿 amostras
Análise Espectral de Sinais Não Estacionários
A STFT é visualizada por um gráfico 3D ou com a intensidade em
cores (espectrograma)
%EXAMPLE: Display the PSD of each segment of a linear chirp.
t=0:0.001:2; % 2 secs @ 1kHz sample rate
y=chirp(t,100,1,200); % Start @ 100Hz, cross 200Hz at t=1sec
spectrogram(y,128,120,128,1E3); % Display the spectrogram
title('Linear Chirp: start at 100Hz and cross 200Hz at t=1sec');
S=spectrogram(y,128,120,128,1E3); % Display the spectrogram
figure,mesh(abs(S))
0 50 100 150 200 250 300 350 400 450 500
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Frequency (Hz)
Linear Chirp: start at 100Hz and cross 200Hz at t=1sec
Tim
e
0
50
100
150
200
250
0
10
20
30
40
50
60
70
0
5
10
15
20
25
30
35
Deslocamento da janela (em amostras)Frequência ( 1000/128)
Magnitude
Análise Espectral de Sinais Não Estacionários
Espectrograma de um sinal de voz
[x,fs]=wavread('female_src_1');
spectrogram(x,512,256,1024,fs);
Análise Espectral de Sinais Aleatórios
A análise espectral de sinais aleatórios pode ser feita utilizando-se o
método do Periodograma ou método de Welch, que estima a
densidade espectral de potência (PSD)
Neste método, calculam-se STFTs de trechos do sinal (geralmente
com sobreposição) e tira-se a média dos seus quadrados, obtendo-se
o periodograma do sinal
𝑃𝑥 𝑘 =1
𝑀 𝑋𝑆𝑇𝐹𝑇 𝑘,𝑚
𝑀−1
𝑚=0
2
, 0 ≤ 𝑘 ≤ 𝑁 − 1
Em geral, usam-se janelas para melhorar a discriminação de
componentes de baixa potência
Funções no Matlab: periodogram, pwelch
Análise Espectral de Sinais Ruidosos
Exemplo: 𝑥 𝑛 = 5𝑠𝑒𝑛 0,4𝜋𝑛 + 𝑣 𝑛
𝑣 𝑛 : ruído branco de variância unitária
(a) Periodogramas de 50
realizações com N=64 e
(b) Periodograma médio
(c) Periodogramas de 50
realizações com N=256 e
(b) Periodograma médio
Análise Espectral de Sinais Ruidosos
Exemplo:
Fs = 1000; t = 0:1/Fs:.3; x = cos(2*pi*t*200)+randn(size(t)); % A cosine of 200Hz plus noise periodogram(x,[],'twosided',512,Fs); % The default window is used
0 100 200 300 400 500 600 700 800 900-55
-50
-45
-40
-35
-30
-25
-20
-15
-10
Frequency (Hz)
Pow
er/
frequency (
dB
/Hz)
Periodogram Power Spectral Density Estimate
Análise Espectral de Sinais Ruidosos
Exemplo:
Fs = 1000; t = 0:1/Fs:.296; x = cos(2*pi*t*200)+randn(size(t)); % A cosine of 200Hz plus noise pwelch(x,[],[],[],Fs,'twosided'); % Uses default window, overlap & NFFT
0 100 200 300 400 500 600 700 800 900-38
-36
-34
-32
-30
-28
-26
-24
-22
-20
-18
Frequency (Hz)
Pow
er/
frequency (
dB
/Hz)
Welch Power Spectral Density Estimate
Transformada Cosseno Discreta (DCT)
A DFT de uma sequência real 𝑥[𝑛] é uma sequência complexa 𝑋[𝑘]
com simetria em torno da amostra 𝑘 =𝑁
2
A DCT é uma transformação ortogonal que representa uma sequência
real no domínio do tempo, 𝑥 𝑛 , por uma sequência também real no
domínio da transformada, 𝑋[𝑘]
Outras transformadas reais são a DST (discrete sine transform) e a
Haar
A DCT pode ser implementada de forma eficiente usando FFTs
É utilizada em compressão de sinais, principalmente de imagens
(JPEG), pela sua propriedade de compactação de energia
Transformada Cosseno Discreta (DCT)
Há diferentes tipos de DCT:
DCT-I:
𝑋 𝑘 =1
2𝑥 0 + (−1)𝑘𝑥 𝑁 − 1 + 𝑥 𝑛 𝑐𝑜𝑠
𝜋
𝑁 − 1𝑘𝑛
𝑁−2
𝑛=1
DCT-II:
𝑋 𝑘 = 𝑥 𝑛 𝑐𝑜𝑠𝜋
𝑁𝑛 +
1
2𝑘
𝑁−1
𝑛=0
DCT-III:
𝑋 𝑘 =1
2𝑥 0 + 𝑥 𝑛 𝑐𝑜𝑠
𝜋
𝑁𝑛 𝑘 +
1
2
𝑁−1
𝑛=1
DCT-IV:
𝑋 𝑘 = 𝑥 𝑛 𝑐𝑜𝑠𝜋
𝑁𝑛 +
1
2𝑘 +
1
2
𝑁−1
𝑛=0