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

Dependencies:   mbed

Committer:
MikamiUitOpen
Date:
Mon Sep 23 07:32:10 2019 +0000
Revision:
1:30d9fb51dec1
Child:
2:4bec6b2be809
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 1:30d9fb51dec1 1 //-----------------------------------------------------------------
MikamiUitOpen 1:30d9fb51dec1 2 // 直流分除去用 IIR フィルタ
MikamiUitOpen 1:30d9fb51dec1 3 // u[n] = a1*u[n-1] + x[n]
MikamiUitOpen 1:30d9fb51dec1 4 // y[n] = g0*(u[n] - u[n-1])
MikamiUitOpen 1:30d9fb51dec1 5 //
MikamiUitOpen 1:30d9fb51dec1 6 // 2019/09/21, Copyright (c) 2019 MIKAMI, Naoki
MikamiUitOpen 1:30d9fb51dec1 7 //-----------------------------------------------------------------
MikamiUitOpen 1:30d9fb51dec1 8
MikamiUitOpen 1:30d9fb51dec1 9 #include "mbed.h"
MikamiUitOpen 1:30d9fb51dec1 10
MikamiUitOpen 1:30d9fb51dec1 11 #ifndef IIR_DC_CUT_HPP
MikamiUitOpen 1:30d9fb51dec1 12 #define IIR_DC_CUT_HPP
MikamiUitOpen 1:30d9fb51dec1 13 namespace Mikami
MikamiUitOpen 1:30d9fb51dec1 14 {
MikamiUitOpen 1:30d9fb51dec1 15 class IirDcCut
MikamiUitOpen 1:30d9fb51dec1 16 {
MikamiUitOpen 1:30d9fb51dec1 17 public:
MikamiUitOpen 1:30d9fb51dec1 18 // コンストラクタ
MikamiUitOpen 1:30d9fb51dec1 19 // a1 フィルタの係数
MikamiUitOpen 1:30d9fb51dec1 20 // g0 利得定数
MikamiUitOpen 1:30d9fb51dec1 21 IirDcCut(float a1, float g0)
MikamiUitOpen 1:30d9fb51dec1 22 : A1_(a1), G0_(g0) { un1_ = 0; }
MikamiUitOpen 1:30d9fb51dec1 23
MikamiUitOpen 1:30d9fb51dec1 24 // フィルタの実行
MikamiUitOpen 1:30d9fb51dec1 25 float Execute(float xn)
MikamiUitOpen 1:30d9fb51dec1 26 {
MikamiUitOpen 1:30d9fb51dec1 27 float un = A1_*un1_ + xn;
MikamiUitOpen 1:30d9fb51dec1 28 float yn = (un - un1_)*G0_;
MikamiUitOpen 1:30d9fb51dec1 29 un1_ = un;
MikamiUitOpen 1:30d9fb51dec1 30 return yn;
MikamiUitOpen 1:30d9fb51dec1 31 }
MikamiUitOpen 1:30d9fb51dec1 32
MikamiUitOpen 1:30d9fb51dec1 33 private:
MikamiUitOpen 1:30d9fb51dec1 34 const float A1_; // フィルタ係数
MikamiUitOpen 1:30d9fb51dec1 35 const float G0_; // 利得定数
MikamiUitOpen 1:30d9fb51dec1 36 float un1_; // 中間の値
MikamiUitOpen 1:30d9fb51dec1 37
MikamiUitOpen 1:30d9fb51dec1 38 // コピー・コンストラクタ禁止のため
MikamiUitOpen 1:30d9fb51dec1 39 IirDcCut(const IirDcCut&);
MikamiUitOpen 1:30d9fb51dec1 40 // 代入演算子禁止のため
MikamiUitOpen 1:30d9fb51dec1 41 IirDcCut& operator=(const IirDcCut&);
MikamiUitOpen 1:30d9fb51dec1 42 };
MikamiUitOpen 1:30d9fb51dec1 43 }
MikamiUitOpen 1:30d9fb51dec1 44 #endif // IIR_DC_CUT_HPP