tag - title xlabel ylabel matlab
MATLAB ''espectrograma'' params (4)
Estos dos métodos anteriores son métodos de operación a corto plazo de señales. La no estacionariedad de la señal (donde las estadísticas son una función del tiempo, Say mean, entre otras estadísticas, es una función del tiempo) implica que solo puede suponer que las estadísticas de la señal son constantes en períodos cortos de tiempo. No hay forma de llegar a ese período de tiempo (para el cual las estadísticas de la señal son constantes) exactamente y, por lo tanto, es sobre todo trabajo de adivinación y ajuste fino.
Diga que la señal que mencionó anteriormente no es estacionaria (cuáles son las señales de EEG). También asuma que es estacionario solo por unos 10 ms o menos. Para medir de manera confiable estadísticas como PSD or energy
, debe medir estas estadísticas 10 ms a la vez. La función de ventana es con la que se multiplica la señal para aislar ese 10 ms de una señal, en la que estará calculando PSD, etc. Así que ahora necesita atravesar la longitud de la señal. Necesita una ventana de desplazamiento (para visualizar toda la señal 10ms a la vez). Superponer las ventanas le da una estimación más confiable de las estadísticas.
Puedes imaginarlo así:
1. Toma los primeros 10ms de la señal.
2. Ventana con la función de ventana.
3. Calcular estadística solo en esta porción de 10 ms.
4. Mueva la ventana 5ms (suponga la longitud de la superposición).
5. Ventana de la señal de nuevo.
6. Calcular estadística de nuevo.
7. Muévase sobre toda la longitud de la señal.
Hay muchos tipos diferentes de funciones de ventana: Blackman, Hanning, Hamming, Rectangular
. Eso y la longitud de la ventana y la superposición realmente dependen de la aplicación que tenga y de las características de frecuencia de la señal en sí.
Como ejemplo, en el procesamiento de voz (donde las señales no son estacionarias y las ventanas se usan mucho), las opciones más populares para las funciones de ventanas son Hamming / Hanning de 10 10ms (320 samples at 16 kHz sampling) with an overlap of 80 samples (25% of window length)
de longitud 10ms (320 samples at 16 kHz sampling) with an overlap of 80 samples (25% of window length)
. Esto funciona razonablemente bien. Puede usar esto como un punto de partida para su aplicación y luego trabajar en su ajuste un poco más con diferentes valores.
También puede querer echar un vistazo a las siguientes funciones en MATLAB:
1. hamming
2. hanning
Espero que sepas que puedes solicitar un montón de ayuda en MATLAB usando el comando de ayuda en la línea de comandos. MATLAB es uno de los softwares mejor documentados que existen. El uso del comando de ayuda para pwelch
también pwelch
definiciones para el tamaño de la ventana y la superposición. Eso debería ayudarte también.
No sé si toda esta información. Lo ayudamos o no, pero mirando la pregunta, sentí que podría haber necesitado un poco de ayuda para comprender de qué se trataba la ventana y la superposición.
HTH,
Sriram.
Soy un principiante en MATLAB y debo realizar un análisis espectral de una señal de EEG dibujando los gráficos de densidad espectral de potencia y espectrograma. Mi señal tiene 10
duración de 10
segundos y una frecuencia de muestreo de 160 Hz
, un total de 1600 samples
y tengo algunas preguntas sobre cómo encontrar los parámetros de las funciones en MATLAB, que incluyen:
pwelch (x, window, noverlap, nfft, fs);
spectrogram (x, window, noverlap, F, fs);
Mi pregunta es dónde encontrar los valores para la window
parámetros y noverlap
. No sé para qué sirven.
Investigue cómo los siguientes parámetros cambian el rendimiento de la función Sinc :
- La longitud de los coeficientes
- Las siguientes funciones de la ventana:
- Blackman Harris
- Hanning
- Bartlett
Para comprender las funciones de la ventana y su uso, primero veamos qué sucede cuando toma la DFT de muestras de longitud finita. Implícito en la definición de la transformada discreta de Fourier, se supone que la longitud finita de la señal que está considerando es periódica.
Considere una onda sinusoidal, muestreada de tal manera que se capture un período completo. Cuando la señal se replica, puede ver que continúa periódicamente como una señal ininterrumpida. La DFT resultante tiene solo un componente distinto de cero y se encuentra en la frecuencia de la sinusoide.
Ahora considere una ola de coseno con un período diferente, muestreada de manera que solo se capture un período parcial. Ahora, si replica la señal, verá discontinuidades en la señal, marcadas en rojo. Ya no hay una transición suave y, por lo tanto, habrá fugas en otras frecuencias, como se ve a continuación.
Esta fuga espectral se produce a través de los lóbulos laterales. Para comprender más sobre esto, también debe leer sobre la función sinc y su transformada de Fourier, la función de rectángulo . La secuencia muestreada finita puede verse como una secuencia infinita multiplicada por la función rectangular. La fuga que se produce está relacionada con los lóbulos laterales de la función sinc (sinc y rectangular pertenecen al espacio auto-dual y son F.Ts entre sí). Esto se explica con más detalle en el artículo de fugas espectrales que he vinculado anteriormente.
Funciones de ventana
Las funciones de la ventana se utilizan en el procesamiento de señales para minimizar el efecto de las fugas espectrales. Básicamente, lo que hace una función de ventana es que reduce la secuencia de longitud finita en los extremos, de modo que cuando está en mosaico, tiene una estructura periódica sin discontinuidades y, por lo tanto, menos fugas espectrales.
Algunas de las ventanas comunes son Hanning, Hamming, Blackman, Blackman-Harris, Kaiser-Bessel, etc. Puedes leer más sobre ellas en el enlace wiki y los comandos MATLAB correspondientes son hann
, hamming
, blackman
, blackmanharris
y kaiser
. Aquí hay una pequeña muestra de las diferentes ventanas:
Quizás te preguntes por qué hay tantas funciones de ventana diferentes. La razón es porque cada uno de estos tiene propiedades espectrales muy diferentes y tienen diferentes anchuras de lóbulos principales y amplitudes de lóbulos laterales. No existe tal cosa como un almuerzo gratis: si desea una buena resolución de frecuencia (el lóbulo principal es delgado), sus lóbulos laterales se vuelven más grandes y viceversa. No puedes tener ambos. A menudo, la elección de la función de ventana depende de las necesidades específicas y siempre se reduce a hacer un compromiso. This es un muy buen artículo que habla sobre el uso de las funciones de la ventana, y definitivamente debería leerlo.
Ahora, cuando usa una función de ventana, tiene menos información en los extremos cónicos. Por lo tanto, una forma de solucionarlo es usar ventanas deslizantes con una superposición, como se muestra a continuación. La idea es que cuando se juntan, se aproximan lo mejor posible a la secuencia original (es decir, la fila inferior debe estar lo más cerca posible de un valor plano de 1). Los valores típicos varían entre el 33% y el 50%, según la aplicación.
Usando el espectrograma de MATLAB
La sintaxis es spectrogram(x,window,overlap,NFFT,fs)
dónde
-
x
es tu vector de datos completo -
window
es su función de ventana. Si ingresa solo un número, digaW
(debe ser entero), entonces MATLAB corta sus datos en trozos deW
cada muestra y forma el espectrograma a partir de él. Esto es equivalente a usar una ventana rectangular de longitudW
muestras. Si desea utilizar una ventana diferente, proporcionehann(W)
o la ventana que elija. -
overlap
es el número de muestras que necesita superponerse. Por lo tanto, si necesita una superposición del 50%, este valor debe serW/2
. Usefloor(W/2)
oceil(W/2)
siW
puede tomar valores impares. Esto es sólo un número entero. -
NFFT
es la longitud FFT -
fs
es la frecuencia de muestreo de su vector de datos. Puede dejar esto vacío, y MATLAB traza la figura en términos de frecuencias normalizadas y el eje de tiempo como simplemente el índice de fragmentos de datos. Si lo ingresas, MATLAB escala el eje en consecuencia.
También puede obtener salidas opcionales, como el vector de tiempo y el vector de frecuencia y el espectro de potencia computado, para usar en otros cálculos o si necesita un estilo diferente para su gráfica. Consulte la documentation para más información.
Aquí hay un ejemplo con 1 segundo de una señal de chirrido lineal de 20 Hz a 400 Hz, muestreada a 1000 Hz. Se utilizan dos funciones de ventana, Hanning
y Blackman-Harris
, con y sin solapamientos. Las longitudes de las ventanas fueron de 50 muestras y se superponen en un 50% cuando se utilizan. Los gráficos se escalan al mismo rango de 80dB en cada gráfico.
Puede notar la diferencia en las figuras (arriba-abajo) debido a la superposición. Obtienes una estimación más limpia si usas superposición. También puede observar el equilibrio entre el ancho del lóbulo principal y la amplitud del lóbulo lateral que mencioné anteriormente. Hanning tiene un lóbulo principal más delgado (línea prominente a lo largo de la diagonal sesgada), lo que resulta en una mejor resolución de frecuencia, pero tiene lóbulos laterales con fugas, vistos por los colores brillantes del exterior. Blackwell-Harris, por otro lado, tiene un lóbulo principal más grueso (línea diagonal más gruesa), pero menos fugas espectrales, evidenciadas por la región exterior uniformemente baja (azul).
Para el último parámetro fs, es la tasa de frecuencia de la señal en bruto, en su caso X, cuando extrae X de los datos de audio usando la función
[X,fs]=audioread(''song.mp3'')
Usted puede obtener fs de él.