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 exhiben transitorios no deseados, o picos. El filtrado mediano 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 ruido de línea de potencia de 60 Hz. 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 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, el filtrado de la mediana descarta puntos que difieren considerablemente de su entorno. Filtre la señal, utilizando conjuntos de tres puntos vecinos para computar 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