exponenta event banner

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

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

Рассмотрим напряжение разомкнутого контура на входе аналогового прибора при наличии шума линии питания 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.

См. также

Связанные темы