informe 4 pds.docx
TRANSCRIPT
4ER. LABORATORIO – 4TA. PRÁCTICA CALIFICADA
ESTIMACIÓN ESPECTRAL DE POTENCIA
BREVE FUNDAMENTO TEÓRICO
PERIODOGRAMA
El espectro de potencia de un proceso aleatorio estacionario en sentido amplio (WSS) es la transformada de Fourier de la secuencia de autocorrelación:
De esta forma, la estimación espectral puede considerarse como un problema de estimación de la autocorrelación.
Para un proceso ergódico en autocorrelación y una cantidad ilimitada de datos, la secuencia de autocorrelación puede ser obtenida mediante el promedio temporal:
Pero si la señal x(n) es conocida únicamente en un intervalo finito (para n = 0, 1, ..., N-1), entonces la secuencia de autocorrelación se ha de estimar mediante una suma finita:
Con el fin de asegurar que los valores de x(n) fuera del intervalo [0, N-1] están excluidos del sumatorio, escribimos la ecuación anterior de la forma siguiente:
para valores negativos de k, se aplica la propiedad de simetría conjugada:
y para valores fuera del intervalo [-N+1, N-1], se iguala a cero:
Aplicando la transformada de Fourier a la secuencia de autocorrelación calculada, obtenemos el estimador espectral de potencia denominado Periodograma:
En ocasiones, puede resultar más conveniente expresar el Periodograma en función del proceso x(n). Supongamos que xN(n) es una secuencia de longitud N, igual a x(n) en el intervalo [0,N-1], y cero fuera de este intervalo.
xN(n) = x(n) ; 0 <= n <= N-1
0 ; para otros valores
De esta manera, podemos considerar xN(n) como el producto de x(n) con una ventana rectangular wR(n):
Y en términos de xN(n), podemos expresar la secuencia de autocorrelación estimada como:
Tomando la transformada de Fourier y aplicando el teorema de la convolución, el periodograma adquiere la forma:
Donde XN(ejw) es la transformada discreta de Fourier de la secuencia xN(n):
Así, el periodograma es proporcional al cuadrado de la transformada discreta de xN(n), y puede calcularse fácilmente de la siguiente manera:
LABORATORIO
EJERCICIO N°1
Para este ejemplo, vamos a cargar un sonido en Matlab, hallaremos su periodograma y a partir de eso, analizaremos los resultados.
El código en Matlab que usamos fue el siguiente:
%SEÑAL DE AUDIO%-----------------------------------------------[x,fs2,nbits2]=wavread('RENruido.wav'); %La función wavread carga un archivo WAV especificado por el nombre del archivo x, fs2 especifica la frecuencia de muestreo del sonido y nbits2 es el número de bits por muestra.figureplot(x);%Usamos plot para graficar la señal xwavplay(x,fs2);%La función wavplay reproduce la señal de audio almacenada en un vector.grid ontitle('señal de audio')N1=length(x);%N1 indica la longitud de la muestra que para nuestro caso es 24000.figureX=fft(x);%Usamos la función fft para hallar su espectro. omega=0:2*pi/N1:2*pi-2*pi/N1;frecuencia=omega*fs2/(2*pi);% Ya que se nos da la velocidad angular, tenemos que determinar la frecuencia para poder graficar.stem(frecuencia,abs(X).^2/N)title('espèctro de potencia de la señal de audio')grid on
Las gráficas que se obtienen son las siguientes:
0 0.5 1 1.5 2 2.5
x 104
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1señal de audio
0 1000 2000 3000 4000 5000 6000 7000 80000
50
100
150
200
250
300
350
400espèctro de potencia de la señal de audio
De los resultados podemos concluir:
Dadas las 24000 muestras, notamos que es innecesario aumentar la densidad de frecuencia aún más añadiendo ceros.
Al ser la voz la señal digitalizada, el ancho de banda de la voz es de 4000 Hz aproximadamente. Entonces, su razón de muestreo será 2*B= 2*(4,000 Hz), es igual a 8000 Hz, equivalente a 8000 muestras por segundo (1/8000). Entonces la razón de muestreo de la voz debe ser de al menos 8000 Hz, para que puede regenerarse sin error según el Teorema de Nyquist.
Nótese que se usan 16 bits por muestras por tanto:Velocidad de transmisión = 8000*16=128Kbits/seg
El espectro del sonido es simétrico respecto a la mitad de la frecuencia de muestreo, es decir, es simétrico a 8000/2 = 4000 Hz, como se ve en el gráfico.
EJERCICIO N°2
Para este segundo ejemplo, utilizaremos una de las funciones básicas de Matlab, la función seno. Hallaremos su periodograma, luego incrementaremos la longitud de la secuencia añadiendo ceros al registro y a partir de eso, analizaremos los resultados.
Trabajaremos con una función Seno con frecuencia de 100 Hz y la frecuencia de muestreo es 1KHz.
El código en Matlab y sus resultados gráficos fueron los siguientes:
close all%SEÑAL SENO%----------------------------fs=1000;t=0:1/fs:0.1-1/fs;y=sin(2*pi*100*t);plot(t,y)title('señal sen(2*pi*100*t)')grid on
% ESPECTRO DE POTENCIA (MUESTRAS DEL PERIODOGRAMA)Y=fft(y);
% NÚMERO DE MUESTRAS INICIAL% N=100N=fs*0.1;%periodofigureomega=0:2*pi/N:2*pi-2*pi/N;frecuencia=omega*fs/(2*pi);subplot(2,1,1), stem(frecuencia,abs(Y).^2/N)title(' espectro de potencia de la señal sen(2*pi*100*t)')grid on
% NÚMERO DE MUESTRAS FINAL% N=512L=512;s=[y zeros(1,L-N)];S=fft(s); omega=0:2*pi/L:2*pi-2*pi/L;frecuencia=omega*fs/(2*pi);
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1señal sen(2*pi*100*t)
subplot(2,1,2),stem(frecuencia,abs(S).^2/N)title('estimacion del espectro de potencia de la señal sen(2*pi*100*t)')grid on
De los resultados, podemos concluir:
El ancho de banda de la señal Seno es BW= fs/2 =500Hz.
El espectro de la señal Seno será simétrico con respecto a la fs/2=500Hz.
Añadir ceros y evaluar la DFT en 512 > 100 puntos no mejora la resolución en frecuencia de la estima espectral. Simplemente nos proporciona un método para interpolar valores del espectro medido en más frecuencias.
La resolución en frecuencia de la estima espectral (Periodograma) queda determinada por la longitud N del registro de datos.
0 100 200 300 400 500 600 700 800 900 10000
10
20
30 espectro de potencia de la señal sen(2*pi*100*t)
60 80 100 120 140 160 180 200 2200
10
20
estimacion del espectro de potencia de la señal sen(2*pi*100*t)