The experiment using this program is introduced on "Interface" No.12, CQ publishing Co.,Ltd, 2014. 本プログラムを使った実験は,CQ出版社のインターフェース 2014年12月号で紹介しています.

Dependencies:   DSProcessingIO mbed

Committer:
CQpub0Mikami
Date:
Tue Jul 29 06:54:25 2014 +0000
Revision:
1:bd300d649b1f
Parent:
0:4498a5360dde
ver.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CQpub0Mikami 0:4498a5360dde 1 //--------------------------------------------------------------
CQpub0Mikami 0:4498a5360dde 2 // Virtual base class for FIR filter
CQpub0Mikami 0:4498a5360dde 3 // Copyright (c) 2014 MIKAMI, Naoki, 2014/06/22
CQpub0Mikami 0:4498a5360dde 4 //--------------------------------------------------------------
CQpub0Mikami 0:4498a5360dde 5
CQpub0Mikami 0:4498a5360dde 6 #ifndef FIR_BASE_HPP
CQpub0Mikami 0:4498a5360dde 7 #define FIR_BASE_HPP
CQpub0Mikami 0:4498a5360dde 8
CQpub0Mikami 0:4498a5360dde 9 #include "mbed.h"
CQpub0Mikami 0:4498a5360dde 10
CQpub0Mikami 0:4498a5360dde 11 namespace Mikami
CQpub0Mikami 0:4498a5360dde 12 {
CQpub0Mikami 0:4498a5360dde 13 template<int order> class FirBase
CQpub0Mikami 0:4498a5360dde 14 {
CQpub0Mikami 0:4498a5360dde 15 private:
CQpub0Mikami 0:4498a5360dde 16 FirBase(const FirBase&);
CQpub0Mikami 0:4498a5360dde 17 FirBase& operator=(const FirBase&);
CQpub0Mikami 0:4498a5360dde 18 protected:
CQpub0Mikami 0:4498a5360dde 19 const float *const hm_; // pointer for filter coefficients
CQpub0Mikami 0:4498a5360dde 20 float xn_[order+1]; // buffer for inputs
CQpub0Mikami 0:4498a5360dde 21
CQpub0Mikami 0:4498a5360dde 22 // Constructor
CQpub0Mikami 0:4498a5360dde 23 FirBase(const float hk[]) : hm_(hk) { Clear(); }
CQpub0Mikami 0:4498a5360dde 24
CQpub0Mikami 0:4498a5360dde 25 // Execute filter
CQpub0Mikami 0:4498a5360dde 26 virtual float Execute(float xin) = 0;
CQpub0Mikami 0:4498a5360dde 27
CQpub0Mikami 0:4498a5360dde 28 // Move signals in xn_[]
CQpub0Mikami 0:4498a5360dde 29 void Move()
CQpub0Mikami 0:4498a5360dde 30 {
CQpub0Mikami 0:4498a5360dde 31 for (int k=order; k>0; k--)
CQpub0Mikami 0:4498a5360dde 32 xn_[k] = xn_[k-1]; // move input signals
CQpub0Mikami 0:4498a5360dde 33 }
CQpub0Mikami 0:4498a5360dde 34 public:
CQpub0Mikami 0:4498a5360dde 35 void Clear()
CQpub0Mikami 0:4498a5360dde 36 {
CQpub0Mikami 0:4498a5360dde 37 for (int k=0; k<=order; k++) xn_[k] = 0.0;
CQpub0Mikami 0:4498a5360dde 38 }
CQpub0Mikami 0:4498a5360dde 39 };
CQpub0Mikami 0:4498a5360dde 40 }
CQpub0Mikami 0:4498a5360dde 41 #endif // FIR_BASE_HPP