Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

信号のスパイクの削除

データが望ましくない過渡特性やスパイクを示すことがあります。メディアン フィルター処理はこれらを消去するのに最適な方法です。

ノイズの影響を受けているアナログ計器の、60 Hz 電力供給ラインからの入力における開ループ電圧について考えます。サンプル レートは 1 kHz です。

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 object. The axes object with title Open-Loop Voltage with Added Spikes, xlabel Time (s), ylabel Voltage (V) contains an object of type line.

yax = ylim;

関数 medfilt1 では、信号のすべての点が、その点と指定された数の各近傍点とのメディアン (中央値) で置き換えられます。したがって、メディアン フィルター処理では、周囲と大幅に異なる点は破棄されます。3 つの近傍点のセットを使用してそれぞれのメディアンを計算し、信号をフィルター処理します。スパイクがどのようになくなるかに注目してください。

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 object. The axes object with title Open-Loop Voltage After Median Filtering, xlabel Time (s), ylabel Voltage (V) contains an object of type line.

参考

関連するトピック