[kaze's test] プログラミングメモ →目次

離散フーリエ逆変換を利用で、FIR係数作成

期待するフィルタ係数の周波数特性を持つ配列を離散フーリエ逆変換(IDFT)して、FIRの係数を作る手法のメモです。

LPFフィルタのFIRの係数の作り方は、離散フーリエ逆変換を利用で、LPF-FIR係数作成のページに記述されています。

HPFフィルタとBPFフィルタのFIRの係数の作り方のテストをメモします。



離散フーリエ逆変換を利用で、LPF-FIR係数作成のページで、LPFフィルタのFIRの係数の作り方を詳しく記述していますが、基本ポイントは、期待するフィルタ係数の周波数特性を配列にセットするのです。

LPFの場合は、下記のように、ARという配列に周波数特性を代入しています。

//周波数特性をセットする
ZeroMemory(AI, sizeof(AI));
ZeroMemory(AR, sizeof(AR));
for (int i = 0; i < iFreqCut; i ++)
{
AR[i] = AR[N-1-i] = 1.0;
}

HPFの場合は、下記のように、ARという配列に周波数特性を代入すればよいと思います。

//周波数特性をセットする
ZeroMemory(AI, sizeof(AI));
ZeroMemory(AR, sizeof(AR));
for (int i = iFreqCut; i < N/2; i ++)
{
AR[i] = AR[N-1-i] = 1.0;
}

すると、下記のように、FIRの係数を作ることができます。

BPFの場合は、下記のように、ARという配列に周波数特性を代入すればよいと思います。

//周波数特性をセットする
ZeroMemory(AI, sizeof(AI));
ZeroMemory(AR, sizeof(AR));
for (int i = iFreqCutLow; i < iFreqCutHigh; i ++)
{
AR[i] = AR[N-1-i] = 1.0;
}

どうすると、下記のように、FIRの係数を作ることができます。