MATLAB で FIR フィルターを使用して信号をフィルター処理しています。下の図では、フィルターを上のプロットに適用すると、下のプロットが作成されます。
これが持つ効果は、データを正常にローパス フィルター処理することですが、すべてを 500 ミリ秒だけシフトします。
データをローパス フィルター処理するために使用するルーチンは次のとおりです。
% (Start with any vector called 'inputData')
samplingRate = 1000;
filterLength = 1000;
filterCutOff = 90;
filterType = fir1(filterLength , filterCutOff/(samplingRate/2), 'low'); % define the low pass filter
inputData = filter(filterType,1,inputData); % filter the data
私のデータの 500 ミリ秒のシフトがフィルターの長さの半分 (1000 ミリ秒) に関連していることは認識していますが、なぜこれが起こるのでしょうか。フィルター処理されたデータの最初の 500 ミリ秒を削除できることはわかっていますが、データの最後の 500 ミリ秒も欠落しています。
この例には信号処理ツールボックスが必要であることに注意してください。