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.

spectrogram

El espectrograma utiliza la transformada de Fourier a corto plazo

Descripción

ejemplo

s = spectrogram(x) Devuelve la transformada de Fourier a corto plazo de la señal de entrada,.x Cada columna contiene una estimación del contenido de frecuencia localizado a corto plazo y localizada en el tiempo.sx

s = spectrogram(x,window) utiliza para dividir la señal en segmentos y realizar ventanas.window

ejemplo

s = spectrogram(x,window,noverlap) utiliza muestras de superposición entre segmentos adyacentes.noverlap

ejemplo

s = spectrogram(x,window,noverlap,nfft) utiliza puntos de muestreo para calcular la transformada de Fourier discreta.nfft

[s,w,t] = spectrogram(___) Devuelve un vector de frecuencias normalizadas, y un vector de instantes de tiempo, en el que se calcula el espectrograma.wt Esta sintaxis puede incluir cualquier combinación de argumentos de entrada de sintaxis anteriores.

ejemplo

[s,f,t] = spectrogram(___,fs) Devuelve un vector de frecuencias cíclicas, expresado en términos de la frecuencia de muestreo. debe ser la quinta entrada.ffsfsEspectrograma Para introducir una frecuencia de muestreo y seguir utilizar los valores predeterminados de los argumentos opcionales anteriores, especifique estos argumentos como vacíos,.[]

ejemplo

[s,w,t] = spectrogram(x,window,noverlap,w) Devuelve el espectrograma en las frecuencias normalizadas especificadas en.w

[s,f,t] = spectrogram(x,window,noverlap,f,fs) Devuelve el espectrograma en las frecuencias cíclicas especificadas en.f

[___,ps] = spectrogram(___) también devuelve una matriz, que contiene una estimación de la densidad espectral de potencia (PSD) o el espectro de potencia de cada segmento.ps

ejemplo

[___] = spectrogram(___,'reassigned') reasigna cada PSD o estimación de espectro de potencia a la ubicación de su centro de energía. Si la señal contiene componentes temporales o espectrales bien localizados, esta opción genera un espectrograma más nítido.

ejemplo

[___,ps,fc,tc] = spectrogram(___) también devuelve dos matrices, y, que contiene la frecuencia y la hora del centro de energía de cada PSD o estimación del espectro de potencia.fctc

[___] = spectrogram(___,freqrange) Devuelve la estimación del espectro de potencia o PSD sobre el rango de frecuencias especificado por.freqrange Las opciones válidas para son, y.freqrange'onesided''twosided''centered'

ejemplo

[___] = spectrogram(___,'MinThreshold',thresh) establece en cero esos elementos de tal que 10 logps10() ≤.psthresh Especifique en decibelios.thresh

[___] = spectrogram(___,spectrumtype) Devuelve estimaciones PSD si se especifica como y devuelve estimaciones de espectro de potencia si se especifica como.spectrumtype'psd'spectrumtype'power'

ejemplo

spectrogram(___) sin argumentos de salida traza el espectrograma en la ventana de la figura actual.

ejemplo

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

Ejemplos

contraer todo

Generar

<math display="block">
<mrow>
<msub>
<mrow>
<mi>N</mi>
</mrow>
<mrow>
<mstyle mathvariant="monospace">
<mrow>
<mi>x</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>=</mo>
<mn>1</mn>
<mn>0</mn>
<mn>2</mn>
<mn>4</mn>
</mrow>
</math>
muestras de una señal que consiste en una suma de sinusoides. 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 10 veces la amplitud de la otra sinusoide.

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

Calcule la transformada de Fourier a corto plazo utilizando los valores predeterminados de la función. Traza el espectrograma.

s = spectrogram(x);  spectrogram(x,'yaxis')

Repite el cómputo.

  • Divida la señal en secciones de longitud

    <math display="block">
    <mrow>
    <mrow>
    <mstyle mathvariant="monospace">
    <mrow>
    <mi>n</mi>
    <mi>s</mi>
    <mi>c</mi>
    </mrow>
    </mstyle>
    </mrow>
    <mo>=</mo>
    <mo></mo>
    <msub>
    <mrow>
    <mi>N</mi>
    </mrow>
    <mrow>
    <mstyle mathvariant="monospace">
    <mrow>
    <mi>x</mi>
    </mrow>
    </mstyle>
    </mrow>
    </msub>
    <mo>/</mo>
    <mn>4</mn>
    <mo>.</mo>
    <mn>5</mn>
    <mo></mo>
    </mrow>
    </math>
    .

  • Ventana de las secciones utilizando una ventana de Hamming.

  • Especifique el 50% de superposición entre secciones contiguas.

  • Para calcular la FFT, utilice

    <math display="block">
    <mrow>
    <mrow>
    <mi mathvariant="normal">max</mi>
    </mrow>
    <mo stretchy="false">(</mo>
    <mn>2</mn>
    <mn>5</mn>
    <mn>6</mn>
    <mo>,</mo>
    <msup>
    <mrow>
    <mn>2</mn>
    </mrow>
    <mrow>
    <mi>p</mi>
    </mrow>
    </msup>
    <mo stretchy="false">)</mo>
    </mrow>
    </math>
    puntos, donde
    <math display="block">
    <mrow>
    <mi>p</mi>
    <mo>=</mo>
    <mo></mo>
    <msub>
    <mrow>
    <mi mathvariant="normal">log</mi>
    </mrow>
    <mrow>
    <mn>2</mn>
    </mrow>
    </msub>
    <mrow>
    <mstyle mathvariant="monospace">
    <mrow>
    <mi>n</mi>
    <mi>s</mi>
    <mi>c</mi>
    </mrow>
    </mstyle>
    </mrow>
    <mo></mo>
    </mrow>
    </math>
    .

Verifique que los dos enfoques den resultados idénticos.

Nx = length(x); nsc = floor(Nx/4.5); nov = floor(nsc/2); nff = max(256,2^nextpow2(nsc));  t = spectrogram(x,hamming(nsc),nov,nff);  maxerr = max(abs(abs(t(:))-abs(s(:))))
maxerr = 0 

Divida la señal en 8 secciones de igual longitud, con un 50% de superposición entre secciones. Especifique la misma longitud de FFT que en el paso anterior. Calcule la transformada de Fourier a corto plazo y compruebe que da el mismo resultado que los dos procedimientos anteriores.

ns = 8; ov = 0.5; lsc = floor(Nx/(ns-(ns-1)*ov));  t = spectrogram(x,lsc,floor(ov*lsc),nff);  maxerr = max(abs(abs(t(:))-abs(s(:))))
maxerr = 0 

Genere un chirp cuadrático, muestreado a 1 kHz durante 2 segundos.x La frecuencia del Chirp es de 100 Hz inicialmente y cruza 200 Hz a = 1 s.t

t = 0:0.001:2; x = chirp(t,100,1,200,'quadratic');

Computa y muestra el espectrograma de.x

  • Divida la señal en secciones de longitud 128, con ventanas con una ventana de Hamming.

  • Especifique 120 muestras de superposición entre las secciones adyacentes.

  • Evalúe el espectro en

    <math display="block">
    <mrow>
    <mo></mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>8</mn>
    <mo>/</mo>
    <mn>2</mn>
    <mo>+</mo>
    <mn>1</mn>
    <mo></mo>
    <mo>=</mo>
    <mn>6</mn>
    <mn>5</mn>
    </mrow>
    </math>
    frecuencias y
    <math display="block">
    <mrow>
    <mo></mo>
    <mo stretchy="false">(</mo>
    <mrow>
    <mstyle mathvariant="monospace">
    <mrow>
    <mi>l</mi>
    <mi>e</mi>
    <mi>n</mi>
    <mi>g</mi>
    <mi>t</mi>
    <mi>h</mi>
    <mo stretchy="false">(</mo>
    <mi>x</mi>
    <mo stretchy="false">)</mo>
    </mrow>
    </mstyle>
    </mrow>
    <mo>-</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>0</mn>
    <mo stretchy="false">)</mo>
    <mo>/</mo>
    <mo stretchy="false">(</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>8</mn>
    <mo>-</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>0</mn>
    <mo stretchy="false">)</mo>
    <mo></mo>
    <mo>=</mo>
    <mn>2</mn>
    <mn>3</mn>
    <mn>5</mn>
    </mrow>
    </math>
    bins de tiempo.

spectrogram(x,128,120,128,1e3)

Reemplace la ventana de Hamming por una ventana de Blackman. Disminuya la superposición a 60 muestras. Trace el eje de tiempo para que sus valores aumenten de arriba a abajo.

spectrogram(x,blackman(128),60,128,1e3) ax = gca; ax.YDir = 'reverse';

Computa y visualiza el PSD de cada segmento de un chirp cuadrático que comienza a 100 Hz y cruza 200 Hz a = 1 segundo.t Especifique una frecuencia de muestreo de 1 kHz, una longitud de segmento de 128 muestras y una superposición de 120 muestras. Utilice 128 puntos DFT y la ventana predeterminada Hamming.

fs = 1000; t = 0:1/fs:2; x = chirp(t,100,1,200,'quadratic');  spectrogram(x,128,120,128,fs,'yaxis') title('Quadratic Chirp')

Computa y visualiza el PSD de cada segmento de un chirp lineal muestreado a 1 kHz que comienza en DC y cruza 150 Hz a = 1 segundo.t Especifique una longitud de segmento de 256 muestras y una superposición de 250 muestras. Utilice la ventana predeterminada de Hamming y 256 puntos DFT.

x = chirp(t,0,1,150);  spectrogram(x,256,250,256,fs,'yaxis') title('Linear Chirp')

Computa y visualiza el PSD de cada segmento de un chirp logarítmico muestreado a 1 kHz que comienza a 20 Hz y cruza 60 Hz a = 1 segundo.t Especifique una longitud de segmento de 256 muestras y una superposición de 250 muestras. Utilice la ventana predeterminada de Hamming y 256 puntos DFT.

x = chirp(t,20,1,60,'logarithmic');  spectrogram(x,256,250,[],fs,'yaxis') title('Logarithmic Chirp')

Utilice una escala logarítmica para el eje de frecuencia. El espectrograma se convierte en una línea.

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

Utilice la función para medir y rastrear la frecuencia instantánea de una señal.Espectrograma

Genere un chirp cuadrático muestreado a 1 kHz durante dos segundos. Especifique el Chirp para que su frecuencia sea inicialmente de 100 Hz y aumente a 200 Hz después de un segundo.

fs = 1000; t = 0:1/fs:2-1/fs; y = chirp(t,100,1,200,'quadratic');

Calcule el espectro del Chirp utilizando la transformada de Fourier a corto plazo implementada en la función.Espectrograma Divida la señal en secciones de longitud 100, con ventanas con una ventana de Hamming. Especifique 80 muestras de superposición entre secciones contiguas y evalúe el espectro en

<math display="block">
<mrow>
<mo></mo>
<mn>1</mn>
<mn>0</mn>
<mn>0</mn>
<mo>/</mo>
<mn>2</mn>
<mo>+</mo>
<mn>1</mn>
<mo></mo>
<mo>=</mo>
<mn>5</mn>
<mn>1</mn>
</mrow>
</math>
Frecuencias.

spectrogram(y,100,80,100,fs,'yaxis')

Rastrea la frecuencia del Chirp encontrando la cresta de frecuencia de tiempo con la energía más alta a través de la

<math display="block">
<mrow>
<mo></mo>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mn>0</mn>
<mn>0</mn>
<mn>0</mn>
<mo>-</mo>
<mn>8</mn>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo>/</mo>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mn>0</mn>
<mn>0</mn>
<mo>-</mo>
<mn>8</mn>
<mn>0</mn>
<mo stretchy="false">)</mo>
<mo></mo>
<mo>=</mo>
<mn>9</mn>
<mn>6</mn>
</mrow>
</math>
puntos de tiempo. Superponer la frecuencia instantánea en el gráfico del espectrograma.

[~,f,t,p] = spectrogram(y,100,80,100,fs);  [fridge,~,lr] = tfridge(p,f);  hold on plot3(t,fridge,abs(p(lr)),'LineWidth',4) hold off

Genere 512 muestras de un chirp con contenido de frecuencia variable sinusoidalmente.

N = 512; n = 0:N-1;  x = exp(1j*pi*sin(8*n/N)*32);

Calcule la transformada de Fourier de corto tiempo centrada en dos lados del Chirp. Divida la señal en segmentos de 32 muestras con superposición de 16 muestras. Especifique 64 puntos DFT. Traza el espectrograma.

[scalar,fs,ts] = spectrogram(x,32,16,64,'centered');  spectrogram(x,32,16,64,'centered','yaxis')

Obtenga el mismo resultado calculando el espectrograma en 64 frecuencias equiespaciadas durante el intervalo

<math display="inline">
<mrow>
<mo>(</mo>
<mo>-</mo>
<mi>π</mi>
<mo>,</mo>
<mi>π</mi>
<mo>]</mo>
</mrow>
</math>
. La opción no es necesaria.'centered'

fintv = -pi+pi/32:pi/32:pi;  [vector,fv,tv] = spectrogram(x,32,16,fintv);  spectrogram(x,32,16,fintv,'yaxis')

Genere una señal de Chirp muestreada durante 2 segundos a 1 kHz. Especifique el Chirp para que su frecuencia sea inicialmente de 100 Hz y aumente a 200 Hz después de 1 segundo.

Fs = 1000; t = 0:1/Fs:2; y = chirp(t,100,1,200,'quadratic');

Calcule el espectrograma reasignado de la señal.

  • Divida la señal en secciones de longitud 128, con ventanas con una ventana de Kaiser con parámetro de forma

    <math display="block">
    <mrow>
    <mi>β</mi>
    <mo>=</mo>
    <mn>1</mn>
    <mn>8</mn>
    </mrow>
    </math>
    .

  • Especifique 120 muestras de superposición entre las secciones adyacentes.

  • Evalúe el espectro en

    <math display="block">
    <mrow>
    <mo></mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>8</mn>
    <mo>/</mo>
    <mn>2</mn>
    <mo></mo>
    <mo>=</mo>
    <mn>6</mn>
    <mn>5</mn>
    </mrow>
    </math>
    frecuencias y
    <math display="block">
    <mrow>
    <mo></mo>
    <mo stretchy="false">(</mo>
    <mrow>
    <mstyle mathvariant="monospace">
    <mrow>
    <mi>l</mi>
    <mi>e</mi>
    <mi>n</mi>
    <mi>g</mi>
    <mi>t</mi>
    <mi>h</mi>
    <mo stretchy="false">(</mo>
    <mi>x</mi>
    <mo stretchy="false">)</mo>
    </mrow>
    </mstyle>
    </mrow>
    <mo>-</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>0</mn>
    <mo stretchy="false">)</mo>
    <mo>/</mo>
    <mo stretchy="false">(</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>8</mn>
    <mo>-</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>0</mn>
    <mo stretchy="false">)</mo>
    <mo></mo>
    <mo>=</mo>
    <mn>2</mn>
    <mn>3</mn>
    <mn>5</mn>
    </mrow>
    </math>
    bins de tiempo.

spectrogram(y,kaiser(128,18),120,128,Fs,'reassigned','yaxis')

Genere una señal de Chirp muestreada durante 2 segundos a 1 kHz. Especifique el Chirp para que su frecuencia sea inicialmente de 100 Hz y aumente a 200 Hz después de 1 segundo.

Fs = 1000; t = 0:1/Fs:2; y = chirp(t,100,1,200,'quadratic');

Calcule la densidad espectral de potencia (PSD) dependiente del tiempo de la señal.

  • Divida la señal en secciones de longitud 128, con ventanas con una ventana de Kaiser con parámetro de forma

    <math display="block">
    <mrow>
    <mi>β</mi>
    <mo>=</mo>
    <mn>1</mn>
    <mn>8</mn>
    </mrow>
    </math>
    .

  • Especifique 120 muestras de superposición entre las secciones adyacentes.

  • Evalúe el espectro en

    <math display="block">
    <mrow>
    <mo></mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>8</mn>
    <mo>/</mo>
    <mn>2</mn>
    <mo></mo>
    <mo>=</mo>
    <mn>6</mn>
    <mn>5</mn>
    </mrow>
    </math>
    frecuencias y
    <math display="block">
    <mrow>
    <mo></mo>
    <mo stretchy="false">(</mo>
    <mrow>
    <mstyle mathvariant="monospace">
    <mrow>
    <mi>l</mi>
    <mi>e</mi>
    <mi>n</mi>
    <mi>g</mi>
    <mi>t</mi>
    <mi>h</mi>
    <mo stretchy="false">(</mo>
    <mi>x</mi>
    <mo stretchy="false">)</mo>
    </mrow>
    </mstyle>
    </mrow>
    <mo>-</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>0</mn>
    <mo stretchy="false">)</mo>
    <mo>/</mo>
    <mo stretchy="false">(</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>8</mn>
    <mo>-</mo>
    <mn>1</mn>
    <mn>2</mn>
    <mn>0</mn>
    <mo stretchy="false">)</mo>
    <mo></mo>
    <mo>=</mo>
    <mn>2</mn>
    <mn>3</mn>
    <mn>5</mn>
    </mrow>
    </math>
    bins de tiempo.

Salida de la frecuencia y el tiempo del centro de gravedad de cada estimación PSD. Fije a cero esos elementos del PSD más pequeño que

<math display="block">
<mrow>
<mo>-</mo>
<mn>3</mn>
<mn>0</mn>
</mrow>
</math>
Db.

[~,~,~,pxx,fc,tc] = spectrogram(y,kaiser(128,18),120,128,Fs, ...     'MinThreshold',-30);

Trace los elementos distintos de cero como funciones de las frecuencias y tiempos del centro de gravedad.

plot(tc(pxx>0),fc(pxx>0),'.')

Genere una señal muestreada a 1024 Hz durante 2 segundos.

nSamp = 2048; Fs = 1024; t = (0:nSamp-1)'/Fs;

Durante el primer segundo, la señal consiste en una sinusoide de 400 Hz y un chirp cuadrático cóncavo. Especifique el Chirp para que sea simétrico con respecto al punto medio del intervalo, comenzando y terminando con una frecuencia de 250 Hz y alcanzando un mínimo de 150 Hz.

t1 = t(1:nSamp/2);  x11 = sin(2*pi*400*t1); x12 = chirp(t1-t1(nSamp/4),150,nSamp/Fs,1750,'quadratic'); x1 = x11+x12;

El resto de la señal consiste en dos cantos lineales de frecuencia decreciente. Un chirp tiene una frecuencia inicial de 250 Hz que disminuye a 100 Hz. El otro Chirp tiene una frecuencia inicial de 400 Hz que disminuye a 250 Hz.

t2 = t(nSamp/2+1:nSamp);  x21 = chirp(t2,400,nSamp/Fs,100); x22 = chirp(t2,550,nSamp/Fs,250); x2 = x21+x22;

Agregue ruido Gaussiano blanco a la señal. Especifique una relación señal-ruido de 20 dB. Restablezca el generador de números aleatorios para obtener resultados reproducibles.

SNR = 20; rng('default')  sig = [x1;x2]; sig = sig + randn(size(sig))*std(sig)/db2mag(SNR);

Computa y traza el espectrograma de la señal. Especifique una ventana Kaiser de longitud 63 con un parámetro de forma

<math display="block">
<mrow>
<mi>β</mi>
<mo>=</mo>
<mn>1</mn>
<mn>7</mn>
</mrow>
</math>
, 10 menos muestras de superposición entre secciones contiguas y una longitud FFT de 256.

nwin = 63; wind = kaiser(nwin,17); nlap = nwin-10; nfft = 256;  spectrogram(sig,wind,nlap,nfft,Fs,'yaxis')

Umbral del espectrograma para que cualquier elemento con valores menores que el SNR se establezca en cero.

spectrogram(sig,wind,nlap,nfft,Fs,'MinThreshold',-SNR,'yaxis')

Reasigne cada estimación PSD a la ubicación de su centro de energía.

spectrogram(sig,wind,nlap,nfft,Fs,'reassign','yaxis')

Umbral del espectrograma reasignado para que cualquier elemento con valores menores que el SNR se establezca en cero.

spectrogram(sig,wind,nlap,nfft,Fs,'reassign','MinThreshold',-SNR,'yaxis')

Cargue una señal de audio que contenga dos chireres que disminuyen y un sonido salpicadura de banda ancha. Calcule la transformada de Fourier a corto plazo. Divida la forma de onda en segmentos de 400 muestras con una superposición de 300 muestras. Traza el espectrograma.

load splat  % To hear, type soundsc(y,Fs)  sg = 400; ov = 300;  spectrogram(y,sg,ov,[],Fs,'yaxis') colormap bone

Utilice la función para emitir la densidad espectral de potencia (PSD) de la señal.Espectrograma

[s,f,t,p] = spectrogram(y,sg,ov,[],Fs);

Realice un seguimiento de los dos chirridos utilizando la función.medfreq Para encontrar el Chirp más fuerte y de baja frecuencia, restrinja la búsqueda a frecuencias superiores a 100 Hz y a veces antes del inicio del sonido de banda ancha.

f1 = f > 100; t1 = t < 0.75;  m1 = medfreq(p(f1,t1),f(f1));

Para encontrar el chirrido de alta frecuencia débil, restrinja la búsqueda a frecuencias por encima de 2500 Hz y a veces entre 0,3 segundos y 0,65 segundos.

f2 = f > 2500; t2 = t > 0.3 & t < 0.65;  m2 = medfreq(p(f2,t2),f(f2));

Superponga el resultado en el espectrograma. Divida los valores de frecuencia por 1000 para expresarlos en kHz.

hold on plot(t(t1),m1/1000,'linewidth',4) plot(t(t2),m2/1000,'linewidth',4) hold off

Genere dos segundos de una señal muestreada a 10 kHz. Especifique la frecuencia instantánea de la señal como una función triangular de tiempo.

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

Computa y traza el espectrograma de la señal. Utilice una ventana de Kaiser de longitud 256 y parámetro de forma

<math display="block">
<mrow>
<mi>β</mi>
<mo>=</mo>
<mn>5</mn>
</mrow>
</math>
. Especifique 220 muestras de superposición de sección a sección y 512 puntos DFT. Trace la frecuencia en el eje.y Utilice el mapa de colores y la vista predeterminados.

spectrogram(x1,kaiser(256,5),220,512,fs,'yaxis')

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

colormap bone view(-45,65)

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector de fila o columna.

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:

Window, especificado como un entero o como un vector de fila o columna. Se utiliza para dividir la señal en segmentos:window

  • Si es un número entero, a continuación, se divide en segmentos de longitud y ventanas de cada segmento con una ventana de Hamming de esa longitud.windowEspectrogramaxwindow

  • Si es un vector, a continuación, se divide en segmentos de la misma longitud que el vector y ventanas de cada segmento utilizando.windowEspectrogramaxwindow

Si la longitud de no se puede dividir exactamente en un número entero de segmentos con muestras superpuestas, entonces se trunca en consecuencia.xnoverlapx

Si especifica como vacío, a continuación, utiliza una ventana de Hamming tal que se divide en ocho segmentos con muestras superpuestas.windowEspectrogramaxnoverlap

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: single | double

Número de muestras superpuestas, especificadas como un entero positivo.

  • Si es escalar, debe ser menor que.windownoverlapwindow

  • Si es un vector, debe ser menor que la longitud de.windownoverlapwindow

Si especifica como vacío, utiliza un número que produce una superposición del 50% entre los segmentos.noverlapEspectrograma Si la longitud del segmento no está especificada, la función se establece ennoverlap Nx/4.5⌋Dónde Nx es la longitud de la señal de entrada y la ⌊⌋ símbolos denotan la función de suelo.

Tipos de datos: double | single

Número de puntos DFT, especificado como un escalar entero positivo. Si especifica como vacío, a continuación, establece el parámetro paranfftEspectrograma max(256,2p)Dónde p = ⌈log2 Nwel ⌈⌉ símbolos denotan la función de techo y

  • Nw = if es un escalar.windowwindow

  • Nw = length(window) Si es un vector.window

Tipos de datos: single | double

Frecuencias normalizadas, especificadas como vector. debe tener al menos dos elementos, porque de lo contrario la función lo interpreta como.wnfft Las frecuencias normalizadas están en Rad/sample.

Ejemplo: pi./[2 4]

Tipos de datos: double | single

Frecuencias cíclicas, especificadas como vector. debe tener al menos dos elementos, porque de lo contrario la función lo interpreta como.fnfft Las unidades de se especifican por la frecuencia de muestreo,.ffs

Tipos de datos: double | single

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

Rango de frecuencias para la estimación de PSD, especificada como, o.'onesided''twosided''centered' Para las señales con valores reales, el valor predeterminado es.'onesided' Para las señales con valores complejos, el valor predeterminado es y se especifican los resultados en un error.'twosided''onesided'

  • : devuelve el espectrograma unilateral de una señal de entrada real.'onesided' Si es Even, entonces tiene/2 + 1 filas y se calcula sobre el intervalonfftpsnfft [0, π] RAD/sample. Si es impar, entonces tiene (+ 1)/2 filas y el intervalo esnfftpsnfft [0, π) RAD/sample. Si especifica, los intervalos son respectivamente [0,/2] ciclos/unidad de tiempo y [0,/2) ciclos/unidad de tiempo.fsfsfs

  • : devuelve el espectrograma de dos caras de una señal real o compleja. tiene filas y se calcula a lo largo del intervalo'twosided'psnfft [0, 2π) RAD/sample. Si especifica, el intervalo es [0,) ciclos/unidad de tiempo.fsfs

  • : devuelve el espectrograma centrado en dos lados de una señal real o compleja. tiene filas.'centered'psnfft Si es Even, entonces se calcula sobre el intervalonfftps (–ππ] RAD/sample. Si es impar, entonces se calcula sobrenfftps (–ππ) RAD/sample. Si especifica, los intervalos son respectivamente (–/2,/2] ciclos/unidad de tiempo y (–/2,/2) ciclos/unidad de tiempo.fsfsfsfsfs

Escala de espectro de potencia, especificada como o.'psd''power'

  • Si se omite o se especifica, se devuelve la densidad espectral de potencia.spectrumtype'psd'

  • Especificar escala cada estimación del PSD por el ancho de banda de ruido equivalente de la ventana.'power' El resultado es una estimación de la potencia en cada frecuencia. Si la opción está activada, la función integra el PSD sobre el ancho de cada bin de frecuencia antes de reasignar.'reassigned'

Umbral, especificado como un escalar real expresado en decibelios. establece en cero esos elementos de tal que 10 logEspectrogramaps10() ≤.psthresh

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.Espectrograma

Argumentos de salida

contraer todo

Transformada de Fourier a corto plazo, devuelta como una matriz. El tiempo aumenta a través de las columnas y la frecuencia aumenta en las filas, comenzando desde cero.s

  • Si es una señal de longitudx Nx, entonces tiene columnas, dondesk

    • = ⌊ (kNx –)/(–) ⌋ si es un escalar.noverlapwindownoverlapwindow

    • = ⌊ (kNx – )/(noverlaplength(window) –) ⌋ si es un vector.noverlapwindow

  • Si es real e incluso, entonces tiene (/2 + 1) filas.xnfftsnfft

  • Si es real y es impar, entonces tiene (+ 1)/2 filas.xnfftsnfft

  • Si es complejo, tiene filas.xsnfft

no se ve afectada por la opción.s'reassigned'

Tipos de datos: double | single

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

Tipos de datos: double | single

Instantes de tiempo, devueltos como un vector. Los valores de tiempo corresponden al punto medio de cada segmento.t

Tipos de datos: double | single

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

Tipos de datos: double | single

Densidad espectral de potencia (PSD) o espectro de potencia, devuelto como una matriz.

  • Si es real, entonces contiene la estimación de periodograma modificado unilateral del PSD o espectro de potencia de cada segmento.xps

  • Si es complejo, o si especifica un vector de frecuencias, entonces contiene la estimación de periodograma modificado a dos caras del PSD o espectro de potencia de cada segmento.xps

Tipos de datos: double | single

Frecuencias y tiempos de centro de energía, devueltos como matrices del mismo tamaño que la transformada de Fourier a corto plazo. Si no especifica una frecuencia de muestreo, los elementos de se devuelven como frecuencias normalizadas.fc

Sugerencias

Si una transformada de Fourier a corto plazo tiene ceros, su conversión a decibelios da como resultado infinitos negativos que no se pueden trazar. Para evitar esta dificultad potencial, se suma a la transformada de Fourier a corto plazo cuando se llama sin argumentos de salida.Espectrogramaeps

Referencias

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

[2] Rabiner, Lawrence R., and Ronald W. Schafer. Digital Processing of Speech Signals. Englewood Cliffs, NJ: Prentice-Hall, 1978.

[3] Chassande-Motin, Éric, François Auger, and Patrick Flandrin. “Reassignment.” In Time-Frequency Analysis: Concepts and Methods. Edited by Franz Hlawatsch and François Auger. London: ISTE/John Wiley and Sons, 2008.

[4] Fulop, Sean A., and Kelly Fitz. “Algorithms for computing the time-corrected instantaneous frequency (reassigned) spectrogram, with applications.” Journal of the Acoustical Society of America. Vol. 119, January 2006, pp. 360–371.

Introducido antes de R2006a