FIRフィルター係数の簡単な求めかた

参考: はじめてのDSP活用大全―開発環境の用意から事例研究まで (ディジタル信号処理シリーズ), pp.155-160

ここでは帯域幅という考えかたはなく、パラメーターはセンター周波数fcのみである。fc = 0にすればローパス、fc = fs/2にすればハイパスといった具合である。

import numpy as np

fc       = 1/8 #通過帯域の中心周波数
fs       = 1   #サンプリング周波数
num_taps = np.arange(16)
coeffs   = np.cos(2 * np.pi * (fc/fs) * num_taps)

print(coeffs)
[ 1.00000000e+00  7.07106781e-01  6.12323400e-17 -7.07106781e-01
 -1.00000000e+00 -7.07106781e-01 -1.83697020e-16  7.07106781e-01
  1.00000000e+00  7.07106781e-01  3.06161700e-16 -7.07106781e-01
 -1.00000000e+00 -7.07106781e-01 -4.28626380e-16  7.07106781e-01]

ホワイトノイズをフィルターにかけて簡易的に周波数特性を見る。
https://github.com/ti-nspire/vi/tree/master/FIR_coeffs_simple
f:id:ti-nspire:20211203065604p:plain