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.

Extracción de sobre

Este ejemplo muestra cómo extraer la envolvente de una señal.

Cree una señal modulada por amplitud de banda lateral doble. La frecuencia portadora es de 1 kHz. La frecuencia de modulación es de 50 Hz. La profundidad de modulación es del 100%. La frecuencia de muestreo es de 10 kHz.

t = 0:1e-4:0.1; x = (1+cos(2*pi*50*t)).*cos(2*pi*1000*t);  plot(t,x) xlim([0 0.04])

Extraiga el sobre utilizando la función.hilbert La envolvente es la magnitud de la señal analítica calculada por .hilbert Trazar el sobre junto con la señal original. Almacene los argumentos de par nombre-valor de la función en una matriz de celdas para su uso posterior.plot La magnitud de la señal analítica captura las características variables lentamente de la señal, mientras que la fase contiene la información de alta frecuencia.

y = hilbert(x); env = abs(y); plot_param = {'Color', [0.6 0.1 0.2],'Linewidth',2};   plot(t,x) hold on plot(t,[-1;1]*env,plot_param{:}) hold off xlim([0 0.04]) title('Hilbert Envelope')

También puede utilizar la función para generar la envolvente de señal directamente y modificar la forma en que se calcula.envelope Por ejemplo, puede ajustar la longitud del filtro Hilbert utilizado para encontrar el sobre analítico. El uso de una longitud de filtro demasiado pequeña da como resultado una envolvente distorsionada.

fl1 = 12; [up1,lo1] = envelope(x,fl1,'analytic'); fl2 = 30; [up2,lo2] = envelope(x,fl2,'analytic'); param_small = {'Color',[0.9 0.4 0.1],'Linewidth',2}; param_large = {'Color',[0 0.4 0],'Linewidth',2};  plot(t,x) hold on p1 = plot(t,up1,param_small{:}); plot(t,lo1,param_small{:}); p2 = plot(t,up2,param_large{:}); plot(t,lo2,param_large{:}); hold off  legend([p1 p2],'fl = 12','fl = 30') xlim([0 0.04]) title('Analytic Envelope')

Puede generar sobres RMS en movimiento mediante una ventana deslizante. El uso de una longitud de ventana demasiado pequeña da como resultado un sobre distorsionado. El uso de una longitud de ventana demasiado grande suaviza el sobre.

wl1 = 3; [up1,lo1] = envelope(x,wl1,'rms'); wl2 = 5; [up2,lo2] = envelope(x,wl2,'rms'); wl3 = 300; [up3,lo3] = envelope(x,wl3,'rms');  plot(t,x) hold on p1 = plot(t,up1,param_small{:}); plot(t,lo1,param_small{:}); p2 = plot(t,up2,plot_param{:}); plot(t,lo2,plot_param{:}); p3 = plot(t,up3,param_large{:}); plot(t,lo3,param_large{:}) hold off  legend([p1 p2 p3],'wl = 3','wl = 5','wl = 300') xlim([0 0.04]) title('RMS Envelope')

Puede generar envolventes de pico mediante la interpolación de spline sobre el máximo local separado por un número ajustable de muestras. La esparcimiento de las muestras demasiado suaviza el sobre.

np1 = 5; [up1,lo1] = envelope(x,np1,'peak'); np2 = 50; [up2,lo2] = envelope(x,np2,'peak');  plot(t,x) hold on p1 = plot(t,up1,param_small{:}); plot(t,lo1,param_small{:}) p2 = plot(t,up2,param_large{:}); plot(t,lo2,param_large{:}) hold off  legend([p1 p2],'np = 5','np = 50') xlim([0 0.04]) title('Peak Envelope')

Aumentar el parámetro de separación de picos puede disminuir el efecto de picos no esenciales debido al ruido. Introducir ruido aleatorio en la señal. Utilice un intervalo de 5 muestras para ver el efecto del ruido en la envolvente de pico. Repita el ejercicio utilizando un intervalo de 25 muestras.

rng default q = x + randn(size(x))/10; np1 = 5; [up1,lo1] = envelope(q,np1,'peak'); np2 = 25; [up2,lo2] = envelope(q,np2,'peak');  plot(t,q) hold on p1 = plot(t,up1,param_small{:}); plot(t,lo1,param_small{:}) p2 = plot(t,up2,param_large{:}); plot(t,lo2,param_large{:}) hold off  legend([p1 p2],'np = 5','np = 25') xlim([0 0.04]) title('Peak Envelope')

Consulte también

|