Está en la página 1de 6

Uso de ventanas en el análisis espectral

En este documento trataré de mostrar como se usan las ventanas.

Supongamos que tengo una señal x[n]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}. En Octave lo hacemos


con la orden
>>xn=1:15

x[n] se muestra en la figura 1.

Figura 1: Señal x[n] que se va a separar en segmentos usando ventanas

Vamos a tomar ventanas rectangulares de 5 elementos. Como vemos, podemos tomar tres ventanas.
Estas tres ventanas serían las que se muestran en la figura 2

Figura 2: Ventanas rectangulares de 5 elementos no


solapadas
Estas tres ventanas son rectangulares ya que todos sus elementos son ‘1’, y por lo tanto su
forma es un rectángulo. Además las ventanas no están solapadas, esto quiere decir, que no
tienen elementos en común, los índices que pertenecen a una ventana, no pertenecen a
ninguna otra ventana.

Las ventanas de la figura 2 se pueden crear en Octave con las ordenes sguientes

>> pkg load signal


>> subplot(311); stem([rectwin(5).', zeros(1,10)])
>> subplot(312); stem([zeros(1,5),rectwin(5).', zeros(1,5)])
>> subplot(313); stem([zeros(1,10),rectwin(5).'])

Las funciones que crean una ventana (rectwin, hamming, hann, y otras), generan vectores
columna, por esa razón en las ordenes anteriores se deben trasnponer.

El resultado de la multiplicación de x[n] con las ventanas se muestra en la figura 3

Figura 3: Señal x[n] dividida en tres mediante el uso de ventanas


rectangulares

La figura 3 se obtuvo en Octave mediante las ordenes


>> subplot(311); stem(xn.*[rectwin(5).', zeros(1,10)])
>> subplot(312); stem(xn.*[zeros(1,5),rectwin(5).', zeros(1,5)])
>> subplot(313); stem(xn.*[zeros(1,10),rectwin(5).'])
Una ventana de hamming de 5 elementos se muestra en la figura 4

Figura 4: Ventana de Hamming de 5 elementos

Si ahora segmentamos x[n] usando ventanas de Hamming, usariamos el siguiente código y


obtendríamos el resultado de la figura 5
>> subplot(311); stem(xn.*[hamming(5).', zeros(1,10)])
>> subplot(312); stem(xn.*[zeros(1,5),hamming(5).', zeros(1,5)])
>> subplot(313); stem(xn.*[zeros(1,10),hamming(5).'])

Figura 5: Señal x[n] separada en tres segmentos no solapados


usando ventanas de hamming
Recuerde que en Octave todos son arreglos matriciales. Es importante decir también que los índices de
las matrices inician en 1.

Como se ha dicho, la realización de sistemas de PDS están fuertemente ligados con la computación, por
lo que la experiencia en programación y la abstracción que se haga de los sistemas, determinará la
eficiencia del resultado y el tiempo necesario para su realización.

Dado que todos los elementos de una ventana rectangular valen 1, aplicar esta ventana deja los
elementos dentro de la ventana, tal cual y los elementos fuera de la ventana los elimina. El mismo
resultado de la figura 3 se obtiene con las órdenes

>> subplot(311); stem([xn(1:5),zeros(1,10)])


>> subplot(312); stem([zeros(1,5),xn(6:10), zeros(1,5)])
>> subplot(313); stem([zeros(1,10),xn(11:15)])

Ventanas solapadas

Podemos tener ventanas que compartan índices, esto es que estén solapadas. Por ejemplo podemos
tener tres ventanas rectangulares de cinco elementos pero que estén solapadas dos elementos, tal como
se muestra en la figura 6

Figura 6: Ventanas rectangulares de 5 elementos, solapadas 2 elementos

Como podemos ver, a mayor solapamiento, es mayor el número de segmentos que obtenemos de una
señal, porque hay elementos que están por lo menos en dos ventanas.

El mayor solapamiento es cuando la diferencia entre una ventana y la siguiente es unicamente una
muestra, tal como se muestra en la figura 7. Si el tamaño de las ventanas es N, el solapamiento máximo
es N-1
Figura 7: Ventanas rectangulares de 5 elementos con el solapamiento máximo

En el documento se establece que la ventaja de solapar las ventanas es que podemos hacer un mejor
seguimiento de la variación de las frecuencias de ventana a ventana. La desventaja es que obtenemos
una gran cantidad de segmentos, y procesar cada ventana puede ser muy costoso desde el punto de vista
de recursos computacionales requeridos.

Sugerencias

El proceso que hagamos sobre cada ventana para determinar la frecuencia contenida en ella es el
mismo. Por lo tanto el programa que haga el espectrograma de una señal x, puede tener la siguiente
estructura.

FOR ventana dentro de x


FFT de ventana en la variable fftx
almacenar en una matriz la magnitud al cuadrado de fftx
END

El almacenamiento se puede hacer tomando una columna para el resutado de cada ventana o tomando
un renglón. Después se usan los procedimientos para visualizar arreglos bidimensionales (image, surf,
y otros)

También podría gustarte