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.

Señal analítica y transformación Hilbert

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

Generar una secuencia compuesta por tres sinusoides con frecuencias 203, 721 y 1001 Hz. La secuencia se muestrea a 10 kHz durante aproximadamente 1 segundo. Utilice la función para calcular la señal analítica.hilbert Trazarlo 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')

Calcular Welch estima las densidades espectrales de potencia de la secuencia original y la señal analítica. Divida las secuencias en secciones no superpuestas con ventanas de Hamming de longitud 256. Verifique que la señal analítica no tenga energía en frecuencias negativas.

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

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

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

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

hb = filter(d,x);

El retardo de grupo del filtro, , es igual a la mitad del orden del filtro.grd Compensar este retraso. Retire las primeras muestras de la parte imaginaria y las últimas muestras de la parte real y el vector de tiempo.grdgrd Trazar 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')

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')

Consulte también

|