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.

stft

La transformada de Fourier a corto plazo

Descripción

s = stft(x) Devuelve la transformada de Fourier (STFT) de corta duración.x

ejemplo

s = stft(x,fs) Devuelve el STFT del uso de la frecuencia de muestreo.xfs

s = stft(x,ts) Devuelve el STFT con el tiempo de muestra.xts

ejemplo

s = stft(___,Name,Value) especifica opciones adicionales mediante argumentos de par nombre-valor. Las opciones incluyen la ventana FFT y la longitud. Estos argumentos se pueden agregar a cualquiera de las sintaxis de entrada anteriores.

[s,f] = stft(___) Devuelve las frecuencias en las que se evalúa el STFT.f

[s,f,t] = stft(___) Devuelve las horas en las que se evalúa el STFT.

stft(___) sin argumentos de salida traza la magnitud de la STFT en la ventana de la figura actual. El STFT se traza como de dos lados y centrado.

Ejemplos

contraer todo

Genere dos segundos de una salida de oscilador controlada por voltaje, controlada por una sinusoide muestreada a 10 kHz.

fs = 10e3; t = 0:1/fs:2; x = vco(sin(2*pi*t),[0.1 0.4]*fs,fs);

Calcule y trace el STFT de la señal. Utilice una ventana de Kaiser de longitud 256 y parámetro de forma

<math display="inline">
<mrow>
<mi>β</mi>
<mo>=</mo>
<mn>5</mn>
</mrow>
</math>
. Especifique la longitud de superposición como 220 muestras y la longitud de DFT como 512 puntos. Trace el STFT con el mapa de colores y la vista predeterminados.

stft(x,fs,'Window',kaiser(256,5),'OverlapLength',220,'FFTLength',512);

Cambie la vista para mostrar el STFT como una gráfica de cascada. Establezca el colores en.jet

view(-45,65) colormap jet

Genere un chirp cuadrático muestreado a 1 kHz durante 2 segundos. La frecuencia instantánea es de 100 Hz en

<math display="inline">
<mrow>
<mi mathvariant="italic">t</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
y cruza 200 Hz en
<math display="inline">
<mrow>
<mi mathvariant="italic">t</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
</math>
Segundo.

ts = 0:1/1e3:2;  f0 = 100; f1 = 200;  x = chirp(ts,f0,1,f1,'quadratic',[],'concave');

Calcule y visualice el STFT del Chirp cuadrático con una duración de 1 ms.

d = seconds(1e-3); win = hamming(100,'periodic');  stft(x,d,'Window',win,'OverlapLength',98,'FFTLength',128);

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o a.MATLAB®timetable

Nota

Si invierte utilizando y desea que el resultado sea la misma longitud que, el valor de debe ser un entero.sistftx(length(x)-noverlap)/(length(window) - noverlap)

  • Para una entrada de horario, debe contener solo un vector y tiempos de fila finitos que aumenten uniformemente.x Si un horario ha desaparecido o ha duplicado los puntos de tiempo, puede arreglarlo usando las sugerencias en.Limpie el horario con los tiempos perdidos, duplicados o no uniformes (MATLAB)

  • Para una entrada vectorial, la longitud de debe ser mayor que la longitud de la ventana.x

Ejemplo: x = chirp(0:1/4e3:2,250,1,500,'quadratic')

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

Frecuencia de muestreo, especificada como un escalar positivo. Este argumento sólo se aplica cuando es un vector.x

Tipos de datos: double | single

Tiempo de muestra, especificado como un escalar.duration Este argumento sólo se aplica cuando es un vector.x

Ejemplo: es unaseconds(1) duration escalar que representa una diferencia de tiempo de 1 segundo entre muestras de señal consecutivas.

Tipos de datos: double | single

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: Windows los datos utilizando la ventana, con 50 muestras superpuestas entre segmentos adyacentes y 128 punto FFT.stft('Window',win,'OverlapLength',50,'FFTLength',128)win

Ventana espectral, especificada como el par separado por comas que consta de y un vector.'Window' Si no especifica la ventana o la especifica como vacía, la función utiliza una ventana Hann de longitud 128. La longitud de debe ser mayor o igual que 2.Window

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

Número de muestras superpuestas, especificadas como un entero no negativo menor que la longitud de.window Si se omite o se especifica como vacío, se establece en el entero más grande menor que 75% de la longitud de la ventana, que es 96 muestras para la ventana de Hann predeterminada.'OverlapLength'

Tipos de datos: double | single

Número de puntos DFT, especificado como un entero positivo. El valor debe ser mayor o igual que la longitud de la ventana. Si la longitud de la señal de entrada es menor que la longitud de la DFT, los datos se rellenan con ceros.

Tipos de datos: double | single

Argumentos de salida

contraer todo

Transformada de Fourier a corto plazo, devuelta como vector. El tiempo aumenta a través de las columnas y la frecuencia aumenta en las filas.s

  • Si la señal tiene longitudx Nx, entonces tiene columnas, donde = ⌊ (skkNx – )/(Llength(window) –) ⌋ donde es un vector, es igual a, y los símbolos de ⌋ ⌊ denotan la función de suelo.LwindowL'OverlapLength'

  • El número de filas en es igual al valor especificado en.s'FFTLength'

Tipos de datos: double | single

Frecuencias a las que se evalúa el STFT, devueltas como vector.

Tipos de datos: double | single

Instantes de tiempo, devueltos como un vector. contiene los valores de tiempo correspondientes a los centros de los segmentos de datos utilizados para calcular estimaciones de espectro de potencia a corto plazo.t

  • Si se proporciona una frecuencia de muestreo, el vector contiene valores de tiempo en segundos.fs

  • Si se proporciona un tiempo de muestra, el vector es una matriz de duración con el mismo formato de hora que la entrada.ts

  • Si no se proporciona información de tiempo, el vector contiene números de muestra.

Tipos de datos: double | single

Algoritmos

La transformada de Fourier (STFT) a corto plazo se utiliza para analizar cómo el contenido de frecuencia de una señal no estacionaria cambia con el tiempo.

El STFT de una señal se calcula deslizando una longitudventana de análisis M sobre la señal y calculando la transformada discreta de Fourier de los datos de ventanas. La ventana salta sobre la señal original a intervalos de R Muestras. La mayoría de las funciones de ventana disminuyen en los bordes para evitar las llamadas espectrales. Si una longitud de superposición distinto de cero L , la superposición de la adición de los segmentos de ventana compensa la atenuación de la señal en los bordes de las ventanas. El DFT de cada segmento de ventana se agrega a una matriz que contiene la magnitud y la fase para cada punto en el tiempo y la frecuencia. El número de filas en la matriz STFT equivale al número de puntos DFT, y el número de columnas viene dado por

k=NxLML,

Dónde Nx es la longitud de la señal original x(n).

La matriz STFT viene dada por X(f)=[X1(f)X2(f)X3(f)Xk(f)] tal que el melemento TH de esta matriz es

Xm(f)=n=x(n)g(nmR)ej2πfn,

Dónde

  • g(n) — Función de ventana de longitud M.

  • Xm(f) — DFT de datos de ventanas centrados en el tiempo mR.

  • R — Tamaño de salto entre DFTs sucesivos. El tamaño del salto es la diferencia entre la longitud de la ventana My la longitud de superposición L.

La magnitud cuadrada de la STFT produce la representación de la densidad espectral de potencia de la función.Espectrograma

Referencias

[1] Mitra, Sanjit K. Digital Signal Processing: A Computer-Based Approach. 2nd Ed. New York: McGraw-Hill, 2001.

[2] Smith, J. O. Spectral Audio Signal Processing. https://ccrma.stanford.edu/~jos/sasp/, online book, 2011 edition, accessed Nov 2018.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Consulte también

Funciones

Introducido en R2019a