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.

Eliminar picos de una señal

A veces, los datos presentan transitorios no deseados o picos. El filtrado de medianas es una forma natural de eliminarlos.

Considere la tensión de bucle abierto a través de la entrada de un instrumento analógico en presencia de 60 Hz de ruido de línea de alimentación. La frecuencia de muestreo es de 1 kHz.

load openloop60hertz  fs = 1000; t = (0:numel(openLoopVoltage) - 1)/fs;

Corrompe la señal añadiendo transitorios con signos aleatorios en puntos aleatorios. Restablezca el generador de números aleatorios para ver la reproducibilidad.

rng default  spikeSignal = zeros(size(openLoopVoltage)); spks = 10:100:1990; spikeSignal(spks+round(2*randn(size(spks)))) = sign(randn(size(spks)));  noisyLoopVoltage = openLoopVoltage + spikeSignal;  plot(t,noisyLoopVoltage)  xlabel('Time (s)') ylabel('Voltage (V)') title('Open-Loop Voltage with Added Spikes')

yax = ylim;

La función reemplaza cada punto de una señal por la mediana de ese punto y un número especificado de puntos vecinos.medfilt1 En consecuencia, la mediana de filtrado descarta puntos que difieren considerablemente de su entorno. Filtre la señal, utilizando conjuntos de tres puntos vecinos para calcular las medianas. Observe cómo desaparecen los picos.

medfiltLoopVoltage = medfilt1(noisyLoopVoltage,3);  plot(t,medfiltLoopVoltage)  xlabel('Time (s)') ylabel('Voltage (V)') title('Open-Loop Voltage After Median Filtering') ylim(yax) grid

Consulte también

Temas relacionados