![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
CQエレクトロニクス・セミナで使用する遮断周波数可変の LPF/HPF のプログラム
Dependencies: mbed SerialTxRxIntr DSP_MultirateLinearphase
IirVariable.hpp
00001 //-------------------------------------------------------------- 00002 // 可変 IIR フィルタのクラス 00003 // 00004 // 2022/02/21, Copyright (c) 2022 MIKAMI, Naoki 00005 //-------------------------------------------------------------- 00006 00007 #include "IIR_Cascade.hpp" 00008 00009 #ifndef VARIABLE_IIR_FILTER_HPP 00010 #define VARIABLE_IIR_FILTER_HPP 00011 00012 namespace Mikami 00013 { 00014 class VariableIir 00015 { 00016 public: 00017 // コンストラクタ 00018 VariableIir() : fPtr2_(&VariableIir::Off) 00019 { 00020 SetOff(); // 最初は出力 Off 00021 Validate(); // フィルタ処理有効 00022 } 00023 00024 // IIR フィルタの実行 00025 float Execute(float xn) { return (this->*fPtr_)((this->*fPtr2_)(xn)); } 00026 00027 // IIR フィルタの係数を設定する 00028 void SetCoefficients(int order, const Biquad::Coefs ck[], float g0) 00029 { iirFilter_.SetCoefs(order, ck, g0); } 00030 00031 // フィルタの遅延器をクリア 00032 void Clear() { iirFilter_.Clear(); } 00033 00034 // IIR フィルタの処理を有効にする 00035 void Validate() { fPtr_ = &VariableIir::Filtering; } 00036 00037 // IIR フィルタの処理を無効にする 00038 void Invalidate() { fPtr_ = &VariableIir::Through; } 00039 00040 // 出力を On にする 00041 void SetOn() { fPtr2_ = &VariableIir::On; } 00042 00043 // 出力を Off にする 00044 void SetOff() { fPtr2_ = &VariableIir::Off; } 00045 00046 private: 00047 IirCascade iirFilter_; 00048 00049 float (VariableIir::*fPtr_)(float); // フィルタ処理タの有無 00050 float (VariableIir::*fPtr2_)(float); // 出力の On/Off 00051 00052 float Through(float xn) { return xn; } // そのまま出力 00053 float Filtering(float xn) // フィルタを実行して出力 00054 { return iirFilter_.Execute(xn); } 00055 float On(float xn) { return xn; } // 出力: On 00056 float Off(float xn) { return 0; } // 出力: Off 00057 00058 // コピー・コンストラクタ,代入演算子禁止禁止のため 00059 VariableIir(const VariableIir&); 00060 VariableIir& operator=(const VariableIir&); 00061 }; 00062 } 00063 #endif // VARIABLE_IIR_FILTER_HPP
Generated on Sat Jul 23 2022 01:01:05 by
![doxygen](doxygen.png)