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

Espectrograma con transformación de Fourier de corta data

Descripción

ejemplo

s = spectrogram(x) devuelve la transformación de Fourier de corto tiempo de la señal de entrada, .x Cada columna de contiene una estimación del contenido de frecuencia a corto plazo, localizado en el tiempo de .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 transformación discreta de Fourier.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, expresada en términos de la frecuencia de muestreo, . debe ser la quinta entrada a .ffsfsEspectrograma Para introducir una frecuencia de muestreo y seguir utilizando 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 a las frecuencias normalizadas especificadas en .w

[s,f,t] = spectrogram(x,window,noverlap,f,fs) devuelve el espectrograma a 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 del 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 contienen la frecuencia y el tiempo del centro de energía de cada PSD o estimación del espectro de potencia.fctc

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

ejemplo

[___] = spectrogram(___,Name,Value) especifica opciones adicionales mediante argumentos de par nombre-valor. Las opciones incluyen el umbral mínimo y la dimensión de tiempo de salida.

[___] = 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 figura actual.

ejemplo

spectrogram(___,freqloc) especifica el eje en el que se trazará la frecuencia.

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 los sinusoides son
<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
rad/muestra y
<math display="block">
<mrow>
<mn>4</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
rad/muestra. La mayor frecuencia sinusoides tiene 10 veces la amplitud del otro sinusoides.

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

Calcular la transformación de Fourier de poco tiempo utilizando los valores predeterminados de la función. Traza el espectrograma.

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

Repita el cálculo.

  • 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 las secciones mediante una ventana Hamming.

  • Especifique una superposición del 50% entre secciones contiguas.

  • Para calcular el 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>
    .

Compruebe que los dos enfoques dan 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 una superposición del 50% entre secciones. Especifique la misma longitud FFT que en el paso anterior. Calcular la transformación de Fourier de poco tiempo y comprobar que proporciona 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 

Generar un chirrido cuadrático, , muestreado a 1 kHz durante 2 segundos.x La frecuencia del chirrido 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');

Calcular y mostrar el espectrograma de .x

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

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

  • Evaluar 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>
    contenedores de tiempo.

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

Reemplace la ventana Hamming por una ventana de Blackman. Disminuya la superposición a 60 muestras. Trazar 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';

Calcular y mostrar el PSD de cada segmento de un chirrido cuadrático que comienza en 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 Hamming predeterminada.

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

Calcular y mostrar el PSD de cada segmento de un chirrido 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 Hamming predeterminada y 256 puntos DFT.

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

Calcular y visualizar el PSD de cada segmento de un chirp logarítmico muestreado a 1 kHz que comienza en 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 Hamming predeterminada 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 realizar un seguimiento de la frecuencia instantánea de una señal.Espectrograma

Genere un chirrido cuadrático muestreado a 1 kHz durante dos segundos. Especifique el chirrido 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 chirrido utilizando la transformación de Fourier de corto tiempo implementada en la función.Espectrograma Divida la señal en secciones de longitud 100, ventanas con una ventana Hamming. Especifique 80 muestras de superposición entre secciones adyacentes 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')

Realice un seguimiento de la frecuencia de chirrido mediante la búsqueda de la cresta de frecuencia de tiempo con la mayor energía 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. Superponga la frecuencia instantánea en la gráfica 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

Generar 512 muestras de un chip con contenido de frecuencia sinusoidalmente variable.

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

Calcula la transformación de Fourier de dos lados centrada de cuatro lados del chirrido. 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 chirrido muestreada durante 2 segundos a 1 kHz. Especifique el chirrido 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');

Estimar el espectrograma reasignado de la señal.

  • Divida la señal en secciones de longitud 128, con ventanas con una ventana 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 secciones adyacentes.

  • Evaluar 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>
    contenedores de tiempo.

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

Genere una señal de chirrido muestreada durante 2 segundos a 1 kHz. Especifique el chirrido 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');

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

  • Divida la señal en secciones de longitud 128, con ventanas con una ventana 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 secciones adyacentes.

  • Evaluar 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>
    contenedores de tiempo.

Salida de la frecuencia y el tiempo del centro de gravedad de cada estimación PSD. Establezca en cero los elementos del PSD más pequeños 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);

Trazar 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 un sinusoides de 400 Hz y un chirrido cuadrático cóncavo. Especifique el chirp para que sea simétrico sobre el punto medio del intervalo, comenzando y terminando a 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 chirridos lineales de frecuencia decreciente. Un chirrido tiene una frecuencia inicial de 250 Hz que disminuye a 100 Hz. El otro chirrido 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);

Calcular y trazar 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 muestras menos de solapamiento entre las secciones adyacentes 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 los elementos con valores más pequeños que el SNR se establezcan en cero.

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

Reasignar 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 los elementos con valores menores que el SNR se establezcan en cero.

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

Cargue una señal de audio que contenga dos chirridos decrecientes y un sonido de salpicadura salpicadero de banda ancha. Calcula la transformación de Fourier de poco tiempo. Divida la forma de onda en segmentos de 400 muestras con 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 generar 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 chirrido 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 débil chirrido de alta frecuencia, restrinja la búsqueda a frecuencias superiores a 2500 Hz y a tiempos 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 del tiempo.

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

Calcular y trazar el espectrograma de la señal. Utilice una ventana Kaiser de longitud 256 y un 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. Trazar 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 un trazado de cascada. Establezca el mapa de 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 un sinusoides incrustado en el ruido gaussiano blanco.cos(pi/4*(0:159))+randn(1,160)

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

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

  • Si es un entero, se divide en segmentos de longitud y ventanas de cada segmento con una ventana Hamming de esa longitud.windowEspectrogramaxwindow

  • Si es un vector, se divide en segmentos de la misma longitud que el vector y windows cada segmento utilizando .windowEspectrogramaxwindow

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

Si especifica como vacío, utilice una ventana Hamming de forma que se divida en ocho segmentos con muestras superpuestas.windowEspectrogramaxnoverlap

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

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

Tipos de datos: single | double

Número de muestras superpuestas, especificada 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 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, establece el parámetro ennfftEspectrograma max(256,2p)Dónde p = ⌈log2 Nwel ⌈⌉ símbolos denotan la función de techo, y

  • Nw Si 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/muestra.

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 escalar positiva. La frecuencia de muestreo es el número de muestras por unidad de tiempo. Si la unidad de tiempo es segundos, entonces la frecuencia de muestreo está en Hz.

Tipos de datos: double | single

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

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

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

  • : devuelve el espectrograma de dos lados centrado de una señal real o compleja. tiene filas.'centered'psnfft Si es par, entonces se calcula a lo largo del intervalonfftps (–ππ] rad/muestra. Si es extraño, entonces se calcula sobrenfftps (–ππ) rad/muestra. Si especifica , los intervalos son respectivamente (– /2, /2] ciclos/tiempo unitario y (– /2, /2) ciclos/tiempo unitario.fsfsfsfsfs

Escalado del espectro de potencia, especificado como o .'psd''power'

  • Omitir o especificar , 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 contenedor de frecuencia antes de reasignar.'reassigned'

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

  • : muestra la frecuencia en el eje y el tiempo en el eje - .'xaxis'xy

  • : muestra la frecuencia en el eje y el tiempo en el eje - .'yaxis'yx

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

Argumentos de par nombre-valor

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

Ejemplo: divide en segmentos de longitud 100 y ventanas cada segmento con una ventana Hamming de esa longitud La salida del espectrograma tiene dimensión de tiempo en las filas.spectrogram(x,100,'OutputTimeDimension','downrows')x

Umbral, especificado como el par separado por comas que consta de y un escalar real expresado en decibelios. establece en cero aquellos elementos de tal que 10 registroMinThresholdEspectrogramas10( ) .sthresh

Dimensión de tiempo de salida, especificada como el par separado por comas que consta de y o .OutputTimeDimensionacrosscolumnsdownrows Establezca este valor en , si desea la dimensión de tiempo de , , , y hacia abajo las filas y la dimensión de frecuencia a lo largo de las columnas.downrowsspsfctc Establezca este valor en , si desea la dimensión de tiempo de , , , y en las columnas y la dimensión de frecuencia a lo largo de las filas.acrosscolumnsspsfctc Esta entrada se omite si se llama a la función sin argumentos de salida.

Argumentos de salida

contraer todo

Transformación de Fourier de corta distancia, devuelta como matriz. El tiempo aumenta a través de las columnas y la frecuencia aumenta las filas, empezando por cero.s

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

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

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

  • Si es real y es par, 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

Instantáneas de tiempo, devueltas como 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 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 de dos lados del PSD o el 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 transformación de Fourier de corta distancia. Si no especifica una frecuencia de muestreo, los elementos de se devuelven como frecuencias normalizadas.fc

Sugerencias

Si una transformación de Fourier de corto tiempo tiene ceros, su conversión a decibelios da como resultado infinidades negativas que no se pueden trazar. Para evitar esta dificultad potencial, se suma a la transformación de Fourier de corta distancia 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.

Capacidades ampliadas

Introducido antes de R2006a