Main Content

Señal analítica y transformada de Hilbert

La función hilbert encuentra la señal analítica exacta para un bloque finito de datos. También se puede generar la señal analítica utilizando un filtro transformador de Hilbert con respuesta al impulso finita (FIR) para calcular una aproximación a la parte imaginaria.

Genere una secuencia compuesta por tres sinusoides con frecuencias de 203, 721 y 1001 Hz. La secuencia se muestrea a 10 kHz durante aproximadamente 1 segundo. Utilice la función hilbert para calcular la señal analítica. Represéntela entre 0,01 segundos y 0,03 segundos.

fs = 1e4;
t = 0:1/fs:1; 

x = 2.5 + cos(2*pi*203*t) + sin(2*pi*721*t) + cos(2*pi*1001*t);

y = hilbert(x);

plot(t,real(y),t,imag(y))
xlim([0.01 0.03])
legend('real','imaginary')
title('hilbert Function')
xlabel('Time (s)')

Figure contains an axes object. The axes object with title hilbert Function contains 2 objects of type line. These objects represent real, imaginary.

Calcule las estimaciones de Welch de las densidades espectrales de potencia de la secuencia original y de la señal analítica. Divida las secuencias en secciones no solapadas de Hamming de longitud 256. Compruebe que la señal analítica no tiene potencia en las frecuencias negativas.

pwelch([x;y].',256,0,[],fs,'centered')
legend('Original','hilbert')

Figure contains an axes object. The axes object with title Power Spectral Density contains 2 objects of type line. These objects represent Original, hilbert.

Utilice la función designfilt para diseñar un filtro transformador de Hilbert con FIR de 60.º orden. Especifique un ancho de transición de 400 Hz. Visualice la respuesta en frecuencia del filtro.

fo = 60;

d = designfilt('hilbertfir','FilterOrder',fo, ...
       'TransitionWidth',400,'SampleRate',fs); 

freqz(d,1024,fs)

Figure Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response contains an object of type line.

Filtre la secuencia sinusoidal para aproximar la parte imaginaria de la señal analítica.

hb = filter(d,x);

El retardo de grupo del filtro, grd, es igual a la mitad del orden del filtro. Compense dicho retardo. Elimine las primeras muestras grd de la parte imaginaria y las últimas muestras grd de la parte real y del vector temporal. Represente el resultado entre 0,01 segundos y 0,03 segundos.

grd = fo/2;
   
y2 = x(1:end-grd) + 1j*hb(grd+1:end);
t2 = t(1:end-grd);

plot(t2,real(y2),t2,imag(y2))
xlim([0.01 0.03])
legend('real','imaginary')
title('FIR Filter')
xlabel('Time (s)')

Figure contains an axes object. The axes object with title FIR Filter contains 2 objects of type line. These objects represent real, imaginary.

Calcule la densidad espectral de potencia (PSD) de la señal analítica aproximada y compárela con el resultado hilbert.

pwelch([y;[y2 zeros(1,grd)]].',256,0,[],fs,'centered')
legend('hilbert','FIR Filter')

Figure contains an axes object. The axes object with title Power Spectral Density contains 2 objects of type line. These objects represent hilbert, FIR Filter.

Consulte también

|