AM中波放送用SDR.CICフィルタのみを使用.CQ出版社「トランジスタ技術」誌,2021年4月号に掲載

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers IirDcCut.hpp Source File

IirDcCut.hpp

00001 //-----------------------------------------------------------------
00002 // 直流分除去用 IIR フィルタ
00003 //      u[n] = a1*u[n-1] + x[n]
00004 //      y[n] = g0*(u[n] - u[n-1])
00005 //
00006 // 2020/08/17, Copyright (c) 2020 MIKAMI, Naoki
00007 //-----------------------------------------------------------------
00008 
00009 #include "mbed.h"
00010 
00011 #ifndef IIR_DC_CUT_HPP
00012 #define IIR_DC_CUT_HPP
00013 namespace Mikami
00014 {
00015     class IirDcCut
00016     {
00017     public:
00018         // コンストラクタ
00019         //      a1  フィルタの係数
00020         //      g0  利得定数
00021         IirDcCut(float a1, float g0)
00022             : A1_(a1), G0_(g0), un1_(0) {}
00023 
00024         // フィルタの実行
00025         float Execute(float xn)
00026         {
00027             float un = A1_*un1_ + xn;
00028             float yn = (un - un1_)*G0_;
00029             un1_ = un;
00030             return yn;
00031         }
00032 
00033     private:
00034         const float A1_;        // フィルタ係数
00035         const float G0_;        // 利得定数
00036         float un1_;             // 遅延器の値
00037 
00038         // コピー・コンストラクタ,代入演算子の禁止のため
00039         IirDcCut(const IirDcCut&);
00040         IirDcCut& operator=(const IirDcCut&);
00041     };
00042 }
00043 #endif  // IIR_DC_CUT_HPP