takanaka kouzou
/
SDR_AM_Rx_CIC_FIR
AM中波放送用SDR.CICフィルタと通常のFIRフィルタを組み合わせて使用.CQ出版社「トランジスタ技術」誌に掲載予定
Diff: SDR_Library/IirDcCut.hpp
- Revision:
- 0:9c28f5905a1a
diff -r 000000000000 -r 9c28f5905a1a SDR_Library/IirDcCut.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDR_Library/IirDcCut.hpp Sat Aug 29 11:25:01 2020 +0000 @@ -0,0 +1,43 @@ +//----------------------------------------------------------------- +// 直流分除去用 IIR フィルタ +// u[n] = a1*u[n-1] + x[n] +// y[n] = g0*(u[n] - u[n-1]) +// +// 2020/08/17, Copyright (c) 2020 MIKAMI, Naoki +//----------------------------------------------------------------- + +#include "mbed.h" + +#ifndef IIR_DC_CUT_HPP +#define IIR_DC_CUT_HPP +namespace Mikami +{ + class IirDcCut + { + public: + // コンストラクタ + // a1 フィルタの係数 + // g0 利得定数 + IirDcCut(float a1, float g0) + : A1_(a1), G0_(g0), un1_(0) {} + + // フィルタの実行 + float Execute(float xn) + { + float un = A1_*un1_ + xn; + float yn = (un - un1_)*G0_; + un1_ = un; + return yn; + } + + private: + const float A1_; // フィルタ係数 + const float G0_; // 利得定数 + float un1_; // 遅延器の値 + + // コピー・コンストラクタ,代入演算子の禁止のため + IirDcCut(const IirDcCut&); + IirDcCut& operator=(const IirDcCut&); + }; +} +#endif // IIR_DC_CUT_HPP \ No newline at end of file