1. Gere e plote um sinal de teste de N=512 pontos:
N=512;
n=0:N-1;
x = (sin(2*pi*n*0.08) + 2*sin(2*pi*n*0.3)).*exp(-(n-200).^2 / 60^2);
plot(n,x)
title('Sinal no dominio do tempo')
xlabel('n')
ylabel('x[n]')
Este sinal é composto de duas senóides, com frequências de 0.08 e 0.3, multiplicadas por uma gaussiana, com desvio padrão de 60. Cada senóide produz um pico no domínio da frequência, enquanto que a gaussiana faz com que estes picos fiquem mais largos e mais uniformes.
2. Calcule a DFT deste sinal. (Pegue o arquivo dft.m aqui)
[ReX,ImX]=dft(x,N);
Plote as partes real e imaginária. Estes gráficos contém a mesma informação que está contida no domínio do tempo.
f=linspace(0,0.5,N/2+1);
subplot(2,1,1)
plot(f,ReX)
title('Parte real')
xlabel('f')
ylabel('ReX(f)')
subplot(2,1,2)
plot(f,ImX)
title('Parte imaginaria')
xlabel('f')
ylabel('ImX(f)')
Esta informação está em uma forma que as pessoas podem entender facilmente? Explique usando estes gráficos como exemplo.
3. Converta o espectro de frequências para a forma polar: (pegue a função retpolar.m aqui)
[MagX,FaseX]=retpolar(ReX,ImX);
Plote a magnitude.
plot(f,MagX)
title('Magnitude do espectro')
xlabel('f')
ylabel('MagX(f)')
Esta informação está em uma forma que as pessoas podem entender facilmente? Explique.
4. Plote a magnitude em escala logaritmica.
semilogy(f,MagX)
title('Magnitude do espectro em dB')
xlabel('f')
ylabel('MagX(f) (dB)')
As amostras entre os dois picos têm amplitude zero? Explique.
5. Plote a fase.
plot(f,FaseX)
title('Fase')
xlabel('f')
ylabel('FaseX(f)')
Identifique as seções da fase que são significativas e as seções que não são mais do que ruído sem significado.
6. Desempacote a fase e plote-a.
FaseX1=unwrap(FaseX);
plot(f,FaseX1);
title('Fase desempacotada')
xlabel('f')
ylabel('FaseX(f)')
Este gráfico é mais fácil de entender? Explique.
7. Converta o espectro de frequências polar de volta para a forma retangular, e calcule a DFT inversa. (Você vai precisar das funções polarret.m e idft.m)
[ReX1,ImX1]=polarret(MagX,FaseX);
x1 = idft(ReX1,ImX1,N);
Compare o sinal resultante x1 com o original x. Eles são idênticos?
Plote a diferença entre os dois sinais, e explique porque ela não é nula.
dif = x-x1;
plot(dif)
title('Diferenca')
xlabel('n')
ylabel('x[n]-x1[n]')