Ejemplo: Utilización de ficheros WAV y creación de espectrogramas
Utilice las funciones READWAV y GETWAVINFO para leer ficheros WAV y obtener información sobre su formato.
Obtención de información de ficheros WAV
1. Utilice GETWAVINFO para obtener información de un fichero de sonido. Este fichero de sonido es una muestra de la vocalización de las estenelas. Se puede utilizar cualquier reproductor de música para reproducirlo.
El vector contiene el número de canales, la frecuencia de muestreo, la resolución (número de bits por muestra) y el promedio de bytes por segundo que un reproductor de audio necesita para procesar el fichero de modo que el audio se reproduzca en tiempo real.
2. Evalúe las variables del vector.
Lectura de un fichero de sonido
1. Utilice la función READWAV para leer el fichero de sonido y guardarlo en un vector.
Si READWAV devuelve una matriz, las columnas sucesivas representan los canales de datos por separado.
2. Utilice la función length para calcular el número total de muestras.
3. Trace la señal.
4. Utilice las funciones match, max y min para buscar las muestras con las magnitudes máxima y mínima y, a continuación, busque el tiempo de la muestra correspondiente.
5. Trace las primeras 25000 muestras y utilice marcadores para mostrar la muestra con la magnitud máxima.
Creación de un espectrograma
Para analizar los datos de sonido, divida los datos en pequeñas porciones de tiempo y observe el contenido de la frecuencia de cada porción. En este ejemplo se utiliza una porción de 128 muestras.
1. Defina un vector de tamaño de porción en potencias de 2.
En él, ss es el número de filas de la matriz de porciones.
2. Defina un vector de factores de solapado entre 0-90%, en incrementos de 10.
El solapado no puede ser 100%.
3. Defina el factor de solapado y utilice las funciones floor y ceil para definir el tamaño de la matriz.
Si el solapado se define en cero, el vector Data se divide en un número de segmentos de ss de largo. A medida que aumenta el solapado, también aumenta el número de fragmentos de ss de largo, como se muestra en la siguiente ecuación:
Cada combinación de tamaño de porción y factor de solapado da lugar a distintas cotas de la matriz de porciones:
Utilizando ss=128 y overlap=40%, se obtiene una matriz 128x2602 que puede tardar mucho tiempo en crearse y trazarse.
4. Cree el vector TI para facilitar la definición de ti en uno de los diez valores que son iguales o menores que el valor de ti.
5. Defina ti en uno de los elementos centrales de TI y observe el gráfico de contorno de la parte inferior de la hoja de trabajo.
Las nuevas cotas de la matriz de porciones son ahora las siguientes:
6. Organice cada porción con una ventana Hamming.
7. Utilice la función log para representar las frecuencias en decibelios.
8. Utilice la función dft (o la función desfasada fft) para buscar la transformada de Fourier de la porción.
Para utilizar la función fft desfasada, desactive la región anterior y active la siguiente.
9. Utilice un gráfico de contorno para trazar spectra.
10. Experimente con distintos valores de tamaño de la porción (ss), overlap y ti. Sin embargo, para observar el efecto en el cálculo y los tiempos de trazado, se recomienda cambiar un parámetro cada vez y dejar los otros dos definidos en sus valores por defecto [128 0.4 82].
A continuación, se muestra la configuración actual de ss, overlap y ti: