Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton UIT_FFT_Real
IIR_Cascade.hpp
00001 //------------------------------------------------------------------------------ 00002 // 縦続形 IIR フィルタのクラス 00003 // 00004 // 2017/04/07, Copyright (c) 2017 MIKAMI, Naoki 00005 //------------------------------------------------------------------------------ 00006 00007 #ifndef IIR_CASCADE_HPP 00008 #define IIR_CASCADE_HPP 00009 00010 #include "Biquad.hpp" 00011 #include "Array.hpp" 00012 00013 namespace Mikami 00014 { 00015 class IIR_Cascade 00016 { 00017 public: 00018 // コンストラクタ 00019 IIR_Cascade(int order, const Biquad::Coefs ck[], float g0) 00020 : ORDER2_(order/2), G0_(g0), hk_(ORDER2_) 00021 { 00022 if ((order % 2) != 0) 00023 { 00024 fprintf(stderr, "\r\nOrder is not even number.\r\n"); 00025 while (true) {} 00026 } 00027 for (int n=0; n<order/2; n++) hk_[n] = Biquad(ck[n]); 00028 Clear(); 00029 } 00030 00031 // デストラクタ 00032 ~IIR_Cascade() {} 00033 00034 // 過去の計算結果を格納する遅延器のクリア 00035 void Clear() 00036 { 00037 for (int k=0; k<ORDER2_; k++) hk_[k].Clear(); 00038 } 00039 00040 // フィルタ処理の実行 00041 float Execute(float xn) 00042 { 00043 float yn = G0_*xn; 00044 for (int k=0; k<ORDER2_; k++) yn = hk_[k].Execute(yn); 00045 return yn; 00046 } 00047 00048 private: 00049 const int ORDER2_; // 次数/2 00050 const float G0_; // 利得定数 00051 00052 Array<Biquad> hk_; // 2 次の IIR フィルタのオブジェクトの配列 00053 00054 // disallow copy constructor and assignment operator 00055 IIR_Cascade(const IIR_Cascade&); 00056 IIR_Cascade& operator=(const IIR_Cascade&); 00057 }; 00058 } 00059 #endif // IIR_CASCADE_HPP
Generated on Tue Jul 12 2022 21:58:54 by
1.7.2