Удаление пиков из сигнала

Иногда данные показывают нежелательные переходные процессы или всплески. Медианная фильтрация является естественным способом их устранения.

Рассмотрим разомкнутый контур напряжение на входе аналогового прибора в присутствии шума линии питания 60 Гц. Частота дискретизации составляет 1 кГц.

load openloop60hertz

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

Повреждение сигнала путем добавления переходных процессов со случайными знаками в случайных точках. Сбросьте генератор случайных чисел для повторяемости.

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

Figure contains an axes. The axes with title Open-Loop Voltage with Added Spikes contains an object of type line.

yax = ylim;

Функция medfilt1 заменяет каждую точку сигнала медианой этой точки и заданным количеством соседних точек. Соответственно, медианная фильтрация отбрасывает точки, которые значительно отличаются от их окружения. Пропустите сигнал, используя наборы из трех соседних точек, чтобы вычислить медианы. Обратите внимание, как исчезают шипы.

medfiltLoopVoltage = medfilt1(noisyLoopVoltage,3);

plot(t,medfiltLoopVoltage)

xlabel('Time (s)')
ylabel('Voltage (V)')
title('Open-Loop Voltage After Median Filtering')
ylim(yax)
grid

Figure contains an axes. The axes with title Open-Loop Voltage After Median Filtering contains an object of type line.

См. также

Похожие темы