このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
信号のスパイクの削除
データが望ましくない過渡特性やスパイクを示すことがあります。メディアン フィルター処理はこれらを消去するのに最適な方法です。
ノイズの影響を受けているアナログ計器の、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')
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