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

La transformada inversa de Fourier synchrosqueezed

Descripción

ejemplo

x = ifsst(s) Devuelve la transformada inversa de Fourier synchrosqueezed de. se reconstruye utilizando todo el plano de frecuencia de tiempo en.sxs

ejemplo

x = ifsst(s,window) reconstruye la señal cuya transformada de Fourier synchrosqueezed fue calculada utilizando.window

x = ifsst(s,window,f,freqrange) invierte la transformada de synchrosqueezed suponiendo que fue muestreada en las frecuencias, que se encuentran dentro.ffreqrange La transformada de synchrosqueezed se invierte para los bins en cuyas frecuencias están dentro.sfreqrange

ejemplo

x = ifsst(s,window,iridge) invierte la transformación synchrosqueezed a lo largo de las crestas de frecuencia de tiempo especificadas por el vector de índice o matriz.iridge Si es una matriz, a continuación, realiza inicialmente la inversión a lo largo de la primera columna de y, a continuación, procede iterativamente a lo largo de las columnas subsiguientes.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 bins de frecuencia alrededor de los índices que se utilizarán 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®." Computa la transformada de Fourier synchrosqueezed 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 ellos.

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 precisión de la reconstrucción calculando el

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

Linf = norm(abs(mtlb-xrec),Inf)
Linf = 1.9984e-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 una sinusoide de 400 Hz y un chirp cuadrático cóncavo. Especifique un chirp que sea simétrico con respecto al punto medio del intervalo, que empiece y finalice a una frecuencia de 250 Hz, y que 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 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;

Computa la transformada de Fourier synchrosqueezed 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. Graficar 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.9042e-13 

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. 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 Chirp con la amplitud más grande. Utilice la cresta para reconstruir la señal.

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

Trace el espectrograma para el componente de mayor energía. Divida el componente en secciones 256-sample 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 Chirp, especifique la 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

Entrada de transformación synchrosqueezed, especificada como una matriz.

Ejemplo: Especifica la transformación synchrosqueezed de una sinusoide.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, a continuación, se supone que la transformación synchrosqueezed,, se calculó mediante una ventana de longitud de Kaiser ywindowifsstswindow β = 10.

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

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

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

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 frecuencias, 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

Í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 bins adyacentes a cada lado de las crestas de frecuencia de tiempo de interés, especificadas como el par separado por comas que consta de un escalar entero positivo y un resultado.'NumFrequencyBins' Los índices cercanos a los bordes de frecuencia que tienen menos contenedores en un lado se reconstruyen utilizando un número menor de bins.nbins

Tipos de datos: single | double

Argumentos de salida

contraer todo

Transformada inversa de synchrosqueezed, devuelta como vector. La longitud de igual al número de columnas en.xs

Introducido en R2016b