1

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 ミリ秒も欠落しています。

この例には信号処理ツールボックスが必要であることに注意してください。

4

2 に答える 2

0

遅延が必要ない場合は、IIR フィルターのゼロ位相遅延を使用する必要があります (使用filtfilt)。

遅滞なく FIR を取得することはできません。つまり、状況に最適なフィルターを選択する必要があります…</p>

フィルタの詳細については、次を使用してください。

Mitra、SK デジタル信号処理: コンピュータベースのアプローチ、第 2 版。マグロウヒル大学

もちろん、お好みで最新版を選んでも構いません。

于 2013-07-05T18:37:42.680 に答える