Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

fsst

La transformada de Fourier synchrosqueezed

Descripción

s = fsst(x) Devuelve la transformada de Fourier synchrosqueezed de la señal de entrada,.x Cada columna de contiene el espectro synchrosqueezed de un segmento de ventana de.sx

ejemplo

[s,w,n] = fsst(x) Devuelve un vector de frecuencias normalizadas, y un vector de números de muestra, en el que se calcula la transformada de Fourier synchrosqueezed. corresponde a las columnas de y corresponde a las filas de.wnwsns

ejemplo

[s,f,t] = fsst(x,fs) Devuelve un vector de frecuencias cíclicas, y un vector de instantes de tiempo, expresado en términos de la frecuencia de muestreo,.ftfs

ejemplo

[s,f,t] = fsst(x,ts) especifica el tiempo de muestra, como un escalar. está en las mismas unidades que.tsdurationtts Las unidades de son recíprocamente a las unidades de.fts

[___] = fsst(___,window) utiliza para dividir la señal en segmentos y realizar ventanas.window Puede usar cualquier combinación de argumentos de entrada de sintaxis anteriores para obtener los argumentos de salida correspondientes.

fsst(___) sin argumentos de salida traza la transformación synchrosqueezed en la ventana de la figura actual.

ejemplo

fsst(___,freqloc) especifica el eje en el que se trazan las frecuencias.

Ejemplos

contraer todo

Genere 1024 muestras de una señal que consista en una suma de sinusoides incrustada en el ruido Gaussiano blanco. Las frecuencias normalizadas de las sinusoides son

<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
RAD/sample y
<math display="block">
<mrow>
<mn>4</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
RAD/sample. La sinusoide de mayor frecuencia tiene 3 veces la amplitud de la otra sinusoide.

N = 1024; n = 0:N-1;  w0 = 2*pi/5; x = sin(w0*n)+3*sin(2*w0*n);

Computa la transformada de Fourier synchrosqueezed de la señal. Graficar el resultado.

[s,w,n] = fsst(x);  mesh(n,w/pi,abs(s))  axis tight view(2) colorbar

Calcule la transformada de Fourier convencional a corto plazo de la señal para la comparación. Utilice los valores predeterminados de.spectrogram Graficar el resultado.

[s,w,n] = spectrogram(x);   surf(n,w/pi,abs(s),'EdgeColor','none')  axis tight view(2) colorbar

Genere una señal que consista en dos Chirps. La señal se muestrea a 3 kHz por un segundo. El primer Chirp tiene una frecuencia inicial de 400 Hz y alcanza los 800 Hz al final del muestreo. El segundo Chirp comienza a 500 Hz y alcanza los 1000 Hz al final. El segundo Chirp tiene el doble de amplitud que el primer Chirp.

fs = 3000; t = 0:1/fs:1-1/fs;  x1 = chirp(t,400,t(end),800); x2 = 2*chirp(t,500,t(end),1000);

Computa y traza la transformada de Fourier synchrosqueezed de la señal.

fsst(x1+x2,fs,'yaxis')

Compare la transformada de synchrosqueezed con la transformada de Fourier (STFT) a corto plazo. Calcule el STFT utilizando la función.spectrogram Especifique los parámetros predeterminados utilizados por:fsst

  • Una ventana Kaiser de 256 puntos con = 10 para la ventana de la señalβ

  • Una superposición de 255 muestras entre segmentos contiguos de ventanas

  • Una longitud FFT de 256

[stft,f,t] = spectrogram(x1+x2,kaiser(256,10),255,256,fs);

Graficar el valor absoluto de la STFT.

mesh(t,f,abs(stft))  xlabel('Time (s)')  ylabel('Frequency (Hz)') title('Short-Time Fourier Transform') axis tight view(2)

Computa y visualiza la transformada de Fourier synchrosqueezed de un chirp cuadrático que comienza a 100 Hz y cruza 200 Hz a = 1 s.t Especifique una frecuencia de muestreo de 1 kHz. Exprese el tiempo de muestra como un escalar.duration

fs = 1000; t = 0:1/fs:2; ts = duration(0,0,1/fs);  x = chirp(t,100,1,200,'quadratic');  fsst(x,ts,'yaxis')  title('Quadratic Chirp')

El algoritmo synchrosquebilancias funciona bajo la suposición de que la frecuencia de la señal varía lentamente. Por lo tanto, el espectro se concentra mejor en los primeros tiempos, donde la tasa de cambio de frecuencia es menor.

Computa y visualiza la transformada de Fourier synchrosqueezed de un chirp lineal que comienza en DC y cruza 150 Hz a = 1 s.t Utilice una ventana de Hamming de 256 muestras.

x = chirp(t,0,1,150);  fsst(x,ts,hamming(256),'yaxis')  title('Linear Chirp')

Computa y visualiza la transformada de Fourier synchrosqueezed de un chirp logarítmico. El Chirp se muestrea a 1 kHz, comienza a 20 Hz y cruza 60 Hz a = 1 s.t Utilice una ventana de Kaiser de 256 muestras con = 20.β

x = chirp(t,20,1,60,'logarithmic');  [s,f,t] = fsst(x,fs,kaiser(256,20));  clf mesh(t,f,(abs(s)))  title('Logarithmic Chirp')  xlabel('Time (s)') ylabel('Frequency (Hz)') view(2)

Utilice una escala logarítmica para el eje de frecuencia. La transformación se convierte en una línea recta.

ax = gca; ax.YScale = 'log'; axis tight

Cargue una señal de voz muestreada en

<math display="block">
<mrow>
<msub>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mi>s</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>7</mn>
<mn>4</mn>
<mn>1</mn>
<mn>8</mn>
<mspace width="0.2777777777777778em"></mspace>
<mstyle mathvariant="normal">
<mrow>
<mi>H</mi>
<mi>z</mi>
</mrow>
</mstyle>
</mrow>
</math>
. El archivo contiene una grabación de una voz femenina que dice la palabra "MATLAB®."

load mtlb  % To hear, type sound(mtlb,Fs)

Computa la transformada de synchrosqueezed de la señal. Utilice una ventana Hann de longitud 256. Visualice la hora en el eje y la frecuencia en el eje.xy

fsst(mtlb,Fs,hann(256),'yaxis')

Utilítalo para invertir la transformación.ifsst Compare las señales originales y las reconstruidas.

sst = fsst(mtlb,Fs,hann(256));  xrc = ifsst(sst,hann(256));  plot((0:length(mtlb)-1)/Fs,[mtlb xrc xrc-mtlb]) legend('Original','Reconstructed','Difference')

 % To hear, type sound(xrc-mtlb,Fs)

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector.

Ejemplo: especifica una sinusoide incrustada en el ruido Gaussiano blanco.cos(pi/4*(0:159))+randn(1,160)

Tipos de datos: single | double
Soporte de números complejos:

Frecuencia de muestreo, especificada como un escalar positivo. La frecuencia de muestreo es el número de muestras por unidad de tiempo. Si la unidad de tiempo es de segundos, entonces la frecuencia de muestreo está en Hz.

Tipos de datos: double | single

Tiempo de muestra, especificado como un escalar.duration El tiempo de muestra es el tiempo transcurrido entre las muestras consecutivas de.x

Tipos de datos: duration

Ventana utilizada para dividir la señal en segmentos, especificado como un entero o como un vector de fila o columna.

  • Si es un número entero, a continuación, se divide en segmentos de longitud y ventanas de cada segmento con una ventana de Kaiser de esa longitud ywindowfsstxwindow β = 10. La superposición entre segmentos adyacentes es – 1.window

  • Si es un vector, a continuación, se divide en segmentos de la misma longitud que el vector y ventanas de cada segmento utilizando.windowfsstxwindow La superposición entre segmentos adyacentes es – 1.length(window)

  • Si no se especifica, se divide en segmentos de longitud 256 y Windows cada segmento con una ventana de Kaiser de 256 muestras conwindowfsstx β = 10. La superposición entre segmentos adyacentes es 255. Si tiene menos de 256 muestras, la función utiliza una sola ventana de Kaiser con la misma longitud quexx β = 10.

Para obtener una lista de las ventanas disponibles, consulte.Windows

Ejemplo: y ambos especifican una ventana Hann de longitud + 1.hann(N+1)(1-cos(2*pi*(0:N)'/N))/2N

Tipos de datos: double | single

Eje de visualización de frecuencia, especificado como o.'xaxis''yaxis'

  • : Muestra la frecuencia en el eje y la hora en el eje.'xaxis'xy

  • : Muestra la frecuencia en el eje y la hora en el eje.'yaxis'yx

Este argumento se omite si se llama con argumentos de salida.fsst

Argumentos de salida

contraer todo

Transformada de Fourier synchrosqueezed, devuelta como una matriz. El tiempo aumenta a través de las columnas de y la frecuencia aumenta por las filas de, a partir de cero.ss Si es real, entonces su espectro synchrosqueezed es unilateral.x Si es complejo, entonces su espectro synchrosqueezed es de dos lados y centrado.x

Frecuencias normalizadas, devueltas como vector. La longitud de igual al número de filas en.ws

Números de muestra, devueltos como vector. La longitud de igual al número de columnas en.ns Cada número de muestra en es el punto medio de un segmento de ventana de.nx

Frecuencias cíclicas, devueltas como vector. La longitud de igual al número de filas en.fs

Instantes de tiempo, devueltos como un vector. La longitud de igual al número de columnas en.ts Cada valor de tiempo en es el punto medio de un segmento de ventana de.tx

Más acerca de

contraer todo

La transformada de Fourier Synchrosqueezed

Muchas señales del mundo real, como las formas de onda del habla, las vibraciones de la máquina y las señales fisiológicas, se pueden expresar como una superposición de modos modulados por amplitud y modulación de frecuencia. Para el análisis de frecuencia de tiempo, es conveniente expresar tales señales como sumas de señales analíticas a través

f(t)=k=1Kfk(t)=k=1KAk(t)ej2πϕk(t).

Las fases ϕk(t) tienen derivados de tiempo k(t)/dt que corresponden a frecuencias instantáneas. Cuando se desconocen las fases exactas, puede utilizar la transformada de Fourier synchrosqueezed para calcularlas.

La transformada de Fourier synchrosqueezed se basa en la transformada de Fourier a corto plazo implementada en la función.spectrogram Para ciertos tipos de señales no estacionarias, la transformada de synchrosqueezed se asemeja al espectrograma reasignado porque genera estimaciones de frecuencia de tiempo más nítidas que la transformación convencional. La función determina la transformada de Fourier a corto plazo de una función, utilizando una ventana espectral, y calculandofsstfg

Vgf(t,η)=f(x)g(xt)ej2πη(xt)dx.

A diferencia de la definición convencional, esta definición tiene un factor adicional de ej2πηt. Los valores de transformación se "estruja" para que se concentren alrededor de curvas de frecuencia instantánea en el plano de frecuencia de tiempo. La transformada de synchrosqueezed resultante es de la forma

Tgf(t,ω)=Vgf(t,η)δ(ωΩgf(t,η))dη,

donde las frecuencias instantáneas se estiman con la "fase de transformación"

Ωgf(t,η)=1j2πtVgf(t,η)Vgf(t,η)=η1j2πVg/tf(t,η)Vgf(t,η).

La transformación en el denominador disminuye la influencia de la ventana. Para ver un ejemplo sencillo, consulte.Detectar las sinusoides estrechamente espaciadas La definición de Tgf(,) difiere por un factor detω 1/g(0) de otras expresiones encontradas en la literatura. incorpora el factor en el paso de reconstrucción de modo.fsst

A diferencia del espectrograma reasignado, la transformada synchrosqueezed es invertible y por lo tanto puede reconstruir los modos individuales que componen la señal. La invertibilidad impone algunas restricciones en el cómputo de la transformada de Fourier a corto plazo:

  • El número de puntos DFT es igual a la longitud de la ventana especificada.

  • La superposición entre los segmentos contiguos de ventanas es uno menos que la longitud de la ventana.

  • La reasignación se realiza solo en frecuencia.

Para encontrar los modos, integre la transformada de synchrosqueezed en un pequeño intervalo de frecuencias alrededor Ωgf( , ):tη

fk(t)1g(0)|ωΩk(t)|<εTgf(t,ω)dω,

donde hay un número pequeño.ɛ

La transformada de synchrosqueezed produce crestas estrechas en comparación con la transformada de Fourier de corto tiempo en ventanas. Sin embargo, el ancho de la transformación de tiempo corto todavía afecta a la capacidad de la transformación synchrosqueezed a modos separados. Para poder resolverse, los modos deben obedecer estas condiciones:

  1. Para cada modo, la frecuencia debe ser estrictamente mayor que la tasa de cambio de la amplitud: dϕk(t)dt>dAk(t)dt para todos los k.

  2. Los modos distintos deben estar separados por al menos el ancho de banda de frecuencia de la ventana. Si el soporte de la ventana es el intervalo [–Δ,Δ]Entonces |dϕk(t)dtdϕm(t)dt|>2Δ Para k ≠ m.

Para obtener una ilustración, consulte.Detectar las sinusoides estrechamente espaciadas

Referencias

[1] Thakur, Gaurav, and Hau-Tieng Wu. “Synchrosqueezing-based Recovery of Instantaneous Frequency from Nonuniform Samples.” SIAM Journal of Mathematical Analysis. Vol. 43, 2011, pp. 2078–2095.

[2] Oberlin, Thomas, Sylvain Meignen, and Valérie Perrier. “The Fourier-based Synchrosqueezing Transform.” Proceedings of the 2014 IEEE® International Conference on Acoustics, Speech, and Signal Processing (ICASSP), pp. 315–319.

[3] Auger, François, Patrick Flandrin, Yu-Ting Lin, Stephen McLaughlin, Sylvain Meignen, Thomas Oberlin, and Hau-Tieng Wu. “Time-Frequency Reassignment and Synchrosqueezing: An Overview.” IEEE Signal Processing Magazine. Vol. 30, November 2013, pp. 32–41.

Introducido en R2016b