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

Committer:
MikamiUitOpen
Date:
2015-07-26
Revision:
0:c5b026c2d07e

File content as of revision 0:c5b026c2d07e:

//-------------------------------------------------------------------
// Peak holder
// Copyright (c) 2014 MIKAMI, Naoki,  2014/12/20
//-------------------------------------------------------------------

#ifndef PEAK_HOLDER_HPP
#define PEAK_HOLDER_HPP

#include "mbed.h"

namespace Mikami
{
    class PeakHolder
    {
    private:
        float a1_, b0_;
        float ynM1_;

    public:
        // Constructor
        explicit PeakHolder(float a1 = 0)
        {
            SetCoefs(a1);
            ynM1_ = 0;
        }
        
        // Argument a1 must be as follows: 0 < a1 < 1
        void SetCoefs(float a1)
        {
            a1_ = a1;
            b0_ =1.0f - a1;
        }
        
        float Execute(float xn)
        {
            float yn = xn;
            if (xn < ynM1_) yn = a1_*ynM1_ + b0_*xn;
            ynM1_ = yn;

            return yn;
        }
    };
}
#endif  // PEAK_HOLDER_HPP