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.
FirFastSymmetry.hpp
00001 //---------------------------------------------------------------------------- 00002 // SDR で使う FIR フィルタ,係数:対称 00003 // ● 処理の高速化のため,入力信号のバッファのサイズを 256,データを指す 00004 // インデックスを uint8_t 型としてリング・バッファを実現している. 00005 // ● さらに,係数が対称であることを利用して,先に x[k] + x[ORDER-k] と 00006 // いう加算を行ってから,係数の乗算を行うようにした. 00007 // 00008 // 2020/07/28, Copyright (c) 2020 MIKAMI, Naoki 00009 //---------------------------------------------------------------------------- 00010 00011 #include "mbed.h" 00012 00013 #ifndef FIR_DIRECT_FAST_SYMMETRY_HPP 00014 #define FIR_DIRECT_FAST_SYMMETRY_HPP 00015 namespace Mikami 00016 { 00017 class FirFastSymmetry 00018 { 00019 public: 00020 // コンストラクタ 00021 // order フィルタの次数,次数は偶数とする 00022 // hk[] フィルタの係数 00023 FirFastSymmetry(uint8_t order, const float hk[]) 00024 : ORDER_(order), ORDER2_(order/2), hm_(hk), index_(255) 00025 { for (int k=0; k<SIZE_; k++) un_[k] = 0; } 00026 00027 // 入力信号をバッファへ書き込む 00028 void Store(float xIn) { un_[++index_] = xIn; } 00029 00030 // FIR フィルタの実行 00031 float Execute() 00032 { 00033 __IO uint8_t ptrM = index_; 00034 __IO uint8_t ptrP = index_ - ORDER_; 00035 float acc = 0; 00036 for (int k=0; k<ORDER2_; k++) 00037 acc += hm_[k]*(un_[ptrM--] + un_[ptrP++]); 00038 acc += hm_[ORDER2_]*un_[ptrM]; 00039 return acc; 00040 } 00041 00042 private: 00043 static const int SIZE_ = 256; // 入力信号のバッファのサイズ 00044 const uint8_t ORDER_; // フィルタの次数 00045 const uint8_t ORDER2_; // フィルタの次数の半分 00046 const float *const hm_; // フィルタの係数 00047 float un_[SIZE_]; // 入力信号のバッファ 00048 __IO uint8_t index_; // 最新の入力信号を示すインデックス 00049 00050 // コピー・コンストラクタ,代入演算子の禁止のため 00051 FirFastSymmetry(const FirFastSymmetry&); 00052 FirFastSymmetry& operator=(const FirFastSymmetry&); 00053 }; 00054 } 00055 #endif // FIR_DIRECT_FAST_SYMMETRY_HPP
Generated on Fri Jul 22 2022 13:23:29 by
