Main Content

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.

ifsst

Transformación sincronera inversa de Fourier

Descripción

ejemplo

x = ifsst(s) devuelve la transformación sincronizada inversa de Fourier de . se reconstruye utilizando todo el plano de frecuencia de tiempo en .sxs

ejemplo

x = ifsst(s,window) reconstruye la señal cuya transformación sincronizada de Fourier se calculó utilizando .window

x = ifsst(s,window,f,freqrange) invierte la transformación sincronamentada suponiendo que se muestreó en las frecuencias, que se encuentran dentro de .ffreqrange La transformación sincronanada se invierte para las ubicaciones en cuyas frecuencias se encuentran dentro de .sfreqrange

ejemplo

x = ifsst(s,window,iridge) invierte la transformación sincronaaa a lo largo de las crestas de frecuencia de tiempo especificadas por el vector de índice o la matriz.iridge Si es una matriz, realiza inicialmente la inversión a lo largo de la primera columna y, a continuación, procede de forma iterativa a lo largo de las columnas posteriores.iridgeifsstiridge La salida es un vector o matriz con el mismo tamaño que .iridge

x = ifsst(s,window,iridge,'NumFrequencyBins',nbins) especifica el número de contenedores de frecuencia alrededor de los índices para utilizar en la reconstrucción.iridge

Ejemplos

contraer todo

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®." Calcula la transformación sincronaexprimida de Fourier de la señal.

load mtlb         % To hear, type sound(mtlb,Fs)  [sst,f] = fsst(mtlb,Fs);

Invierta la transformación para reconstruir la señal. Trazar las señales originales y reconstruidas, así como la diferencia entre ellas.

xrec = ifsst(sst);   t = (0:length(mtlb)-1)/Fs; plot(t,mtlb,t,xrec,t,mtlb-xrec)  xlabel('Time (s)') legend('Original','Reconstructed','Difference')

Compruebe la exactitud de la reconstrucción calculando el

<math display="block">
<mrow>
<msub>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mo></mo>
</mrow>
</msub>
</mrow>
</math>
de la diferencia entre la señal original y la transformación inversa.

Linf = norm(abs(mtlb-xrec),Inf)
Linf = 1.9762e-14 
 % To hear, type sound(mtlb-xrec,Fs)

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 un chirrido que sea simétrico sobre el punto medio del intervalo, comience y termine a una frecuencia de 250 Hz y alcance 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;

Calcula la transformación sincronaexprimida de Fourier de la señal. Especifique una ventana Kaiser de 256 muestras con un parámetro de forma 100.β Utilice la funcionalidad de trazado para mostrar el resultado.fsst

sig = [x1;x2]; wind = kaiser(256,120);  [sigtr,ftr,ttr] = fsst(sig,Fs,wind);  fsst(sig,Fs,wind,'yaxis')

Invierta la transformación para reconstruir la función. Trazar las señales originales e invertidas y la diferencia entre ellas.

x = ifsst(sigtr,wind);  plot(t,sig,t,x,t,x-sig) legend('Original','Reconstructed','Difference')

 diffnorm = norm(x-sig)
diffnorm = 3.9031e-13 

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

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

Calcular y trazar la transformación sincronaexprimida de Fourier de la señal. Visualice la hora en el eje y la frecuencia en el eje - .xy

[sst,f] = fsst(x1+x2,fs); fsst(x1+x2,fs,'yaxis')

Extraiga la cresta correspondiente al componente de mayor energía de la señal, que es el chirrido con la amplitud más grande. Utilice la cresta para reconstruir la señal.

[~,iridge] = tfridge(sst,f);   xrec = ifsst(sst,[],iridge);

Trazar el espectrograma para el componente de mayor energía. Divida el componente en secciones de 256 muestras y especifique una superposición de 255 muestras. Utilice 512 puntos DFT y una ventana rectangular.

spectrogram(xrec,rectwin(256),255,512,fs,'yaxis')

Para extraer el segundo chirrido, especifique esa búsqueda de dos crestas.tfridge La segunda columna de la salida es el componente de menor energía de la señal.

[~,iridge] = tfridge(sst,f,'NumRidges',2);  xrec = ifsst(sst,[],iridge(:,2));  spectrogram(xrec,rectwin(256),255,512,fs,'yaxis')

Argumentos de entrada

contraer todo

Transformación sincronizada de entrada, especificada como matriz.

Ejemplo: especifica la transformación sincronación de un sinusoides.fsst(cos(pi/4*(0:159)))

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

Ventana espectral, especificada como un entero o como un vector de fila o columna.

  • Si es un entero, entonces se supone que la transformación sincronizada, , se calculó utilizando una ventana Kaiser de longitud ywindowifsstswindow β = 10.

  • Si es un vector, entonces se supone que se calculó mediante la ventana de cada segmento de la señal original utilizando .windowifsstswindow

  • Si no se especifica, se supone que se calculó utilizando una ventana Kaiser de longitud 256 ywindowifssts β = 10. Si la señal a reconstruir, , tiene menos de 256 muestras, entonces debe proporcionar una longitud de ventana o vector de ventana coherente con la longitud de .xx

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

Frecuencias de muestreo, especificadas como vector. La longitud de debe ser igual al número de elementos en .fs

Tipos de datos: single | double

Rango de frecuencia, especificado como un vector de dos elementos. Los valores de deben ser estrictamente crecientes y deben estar en el rango comprendido por .freqrangef

Tipos de datos: single | double

Los índices de cresta de frecuencia de tiempo, especificados como vector o matriz. es una salida de .iridgetfridge

Tipos de datos: single | double

Número de ubicaciones vecinas a ambos lados de las crestas de frecuencia de tiempo de interés, especificado como el par separado por comas que consta de y un escalar entero positivo.'NumFrequencyBins' Los índices cercanos a los bordes de frecuencia que tienen menos de las bandejas en un lado se reconstruyen utilizando un número menor de ubicaciones.nbins

Tipos de datos: single | double

Argumentos de salida

contraer todo

Transformación sincronaexprimida inversa, devuelta como vector. La longitud de es igual al número de columnas en .xs

Capacidades ampliadas

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

Introducido en R2016b