Real-time spectrum analyzer for ST Nucleo F401RE using Seeed Studio 2.8'' TFT Touch Shield V2.0.
Dependencies: SeeedStudioTFTv2 UITDSP_ADDA UIT_FFT_Real mbed
SpactrumAnalysisClasses/PeakHolder.hpp@0:c5b026c2d07e, 2015-07-26 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sun Jul 26 02:48:23 2015 +0000
- Revision:
- 0:c5b026c2d07e
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:c5b026c2d07e | 1 | //------------------------------------------------------------------- |
MikamiUitOpen | 0:c5b026c2d07e | 2 | // Peak holder |
MikamiUitOpen | 0:c5b026c2d07e | 3 | // Copyright (c) 2014 MIKAMI, Naoki, 2014/12/20 |
MikamiUitOpen | 0:c5b026c2d07e | 4 | //------------------------------------------------------------------- |
MikamiUitOpen | 0:c5b026c2d07e | 5 | |
MikamiUitOpen | 0:c5b026c2d07e | 6 | #ifndef PEAK_HOLDER_HPP |
MikamiUitOpen | 0:c5b026c2d07e | 7 | #define PEAK_HOLDER_HPP |
MikamiUitOpen | 0:c5b026c2d07e | 8 | |
MikamiUitOpen | 0:c5b026c2d07e | 9 | #include "mbed.h" |
MikamiUitOpen | 0:c5b026c2d07e | 10 | |
MikamiUitOpen | 0:c5b026c2d07e | 11 | namespace Mikami |
MikamiUitOpen | 0:c5b026c2d07e | 12 | { |
MikamiUitOpen | 0:c5b026c2d07e | 13 | class PeakHolder |
MikamiUitOpen | 0:c5b026c2d07e | 14 | { |
MikamiUitOpen | 0:c5b026c2d07e | 15 | private: |
MikamiUitOpen | 0:c5b026c2d07e | 16 | float a1_, b0_; |
MikamiUitOpen | 0:c5b026c2d07e | 17 | float ynM1_; |
MikamiUitOpen | 0:c5b026c2d07e | 18 | |
MikamiUitOpen | 0:c5b026c2d07e | 19 | public: |
MikamiUitOpen | 0:c5b026c2d07e | 20 | // Constructor |
MikamiUitOpen | 0:c5b026c2d07e | 21 | explicit PeakHolder(float a1 = 0) |
MikamiUitOpen | 0:c5b026c2d07e | 22 | { |
MikamiUitOpen | 0:c5b026c2d07e | 23 | SetCoefs(a1); |
MikamiUitOpen | 0:c5b026c2d07e | 24 | ynM1_ = 0; |
MikamiUitOpen | 0:c5b026c2d07e | 25 | } |
MikamiUitOpen | 0:c5b026c2d07e | 26 | |
MikamiUitOpen | 0:c5b026c2d07e | 27 | // Argument a1 must be as follows: 0 < a1 < 1 |
MikamiUitOpen | 0:c5b026c2d07e | 28 | void SetCoefs(float a1) |
MikamiUitOpen | 0:c5b026c2d07e | 29 | { |
MikamiUitOpen | 0:c5b026c2d07e | 30 | a1_ = a1; |
MikamiUitOpen | 0:c5b026c2d07e | 31 | b0_ =1.0f - a1; |
MikamiUitOpen | 0:c5b026c2d07e | 32 | } |
MikamiUitOpen | 0:c5b026c2d07e | 33 | |
MikamiUitOpen | 0:c5b026c2d07e | 34 | float Execute(float xn) |
MikamiUitOpen | 0:c5b026c2d07e | 35 | { |
MikamiUitOpen | 0:c5b026c2d07e | 36 | float yn = xn; |
MikamiUitOpen | 0:c5b026c2d07e | 37 | if (xn < ynM1_) yn = a1_*ynM1_ + b0_*xn; |
MikamiUitOpen | 0:c5b026c2d07e | 38 | ynM1_ = yn; |
MikamiUitOpen | 0:c5b026c2d07e | 39 | |
MikamiUitOpen | 0:c5b026c2d07e | 40 | return yn; |
MikamiUitOpen | 0:c5b026c2d07e | 41 | } |
MikamiUitOpen | 0:c5b026c2d07e | 42 | }; |
MikamiUitOpen | 0:c5b026c2d07e | 43 | } |
MikamiUitOpen | 0:c5b026c2d07e | 44 | #endif // PEAK_HOLDER_HPP |
MikamiUitOpen | 0:c5b026c2d07e | 45 |