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.

Transformación Hilbert y Frecuencia Instantánea

La transformación Hilbert estima la frecuencia instantánea de una señal solo para señales monocomponente. Una señal monocomponente se describe en el plano de frecuencia de tiempo mediante una sola "cresta". El conjunto de señales monocomponente incluye sinusoides individuales y señales como chirridos.

Genere un chirrido 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);

Calcule el espectrograma del chirrido utilizando la transformación de Fourier de corto tiempo implementada en la función.pspectrum La señal está bien descrita por una sola frecuencia pico en cada punto en el tiempo.

pspectrum(y,fs,'spectrogram')

Calcular la señal analítica y diferenciar su fase para medir la frecuencia instantánea. El derivado escalado produce una estimación significativa.

z = hilbert(y); instfrq = fs/(2*pi)*diff(unwrap(angle(z)));  clf plot(t(2:end),instfrq) ylim([0 fs/2])

La función calcula y muestra la frecuencia instantánea en un solo paso.instfreq

instfreq(y,fs,'Method','hilbert')

El método falla cuando la señal no es monocomponente.

Generar una suma de dos sinusoides de frecuencias 60 Hz y 90 Hz, muestreadas a 1023 Hz durante dos segundos. Calcular y trazar el espectrograma. Cada punto de tiempo muestra la presencia de los dos componentes.

fs = 1023; t = 0:1/fs:2-1/fs; x = sin(2*pi*60*t)+sin(2*pi*90*t);  pspectrum(x,fs,'spectrogram') yticks([60 90])

Calcular la señal analítica y diferenciar su fase. Acercar la región que encierra las frecuencias de los sinusoides. La señal analítica predice una frecuencia instantánea que es el promedio de las frecuencias sinusoides.

z = hilbert(x); instfrq = fs/(2*pi)*diff(unwrap(angle(z)));  plot(t(2:end),instfrq) ylim([60 90]) xlabel('Time (s)') ylabel('Frequency (Hz)')

La función también estima el promedio.instfreq

instfreq(x,fs,'Method','hilbert')

Para estimar ambas frecuencias como funciones de tiempo, utilice para encontrar la densidad espectral de potencia y para rastrear las dos crestas.spectrogramtfridge En , especifique la penalización para cambiar la frecuencia como 0.1.tfridge

[s,f,tt] = pspectrum(x,fs,'spectrogram');  numcomp = 2; [fridge,~,lr] = tfridge(s,f,0.1,'NumRidges',numcomp);  pspectrum(x,fs,'spectrogram') hold on plot3(tt,fridge,abs(s(lr)),'LineWidth',4) hold off yticks([60 90])

Consulte también

|

Temas relacionados