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: Array_Matrix F446_AD_DA ST7565_SPI_LCD TextLCD UIT_FFT_Real
Fork of F446_MySoundMachine by
SignalProcessing/BilinearDesignLH.hpp
- Committer:
- MikamiUitOpen
- Date:
- 2017-01-31
- Revision:
- 5:503bd366fd73
- Parent:
- 0:fa74b1130cc3
File content as of revision 5:503bd366fd73:
//------------------------------------------------------------------------
//  Design of Butterworth LPF and HPF using bilinear transform -- Header
//
//   2016/03/31, Copyright (c) 2016 MIKAMI, Naoki
//------------------------------------------------------------------------
#ifndef BILINEAR_BUTTERWORTH_HPP
#define BILINEAR_BUTTERWORTH_HPP
#include "mbed.h"
#include <complex>  // requisite
#include "Array.hpp"
namespace Mikami
{
    typedef complex<float> Complex; // define "Complex"
    class BilinearDesign
    {
    public:
        struct Coefs { float a1, a2, b1, b2; };
        enum Type { LPF, HPF };
        // Constructor
        BilinearDesign(int order, float fs)
            : PI_FS_(PI_/fs), ORDER_(order),
              sP_(order/2), zP_(order/2), ck_(order/2) {}
        // Destractor
        virtual ~BilinearDesign() {}
        // Execution of design
        void Execute(float fc, Type pb, Coefs c[], float& g);
    private:
        static const float PI_ = 3.1415926536f;
        const float PI_FS_;
        const int ORDER_;
        Array<Complex> sP_;   // Poles on s-plane
        Array<Complex> zP_;   // Poles on z-plane
        Array<Coefs> ck_;     // Coefficients of transfer function for cascade form
        float gain_;    // Gain factor for cascade form
        void Butterworth();
        void Bilinear(float fc);
        void ToCascade(Type pb);
        void GetGain(Type pb);
        void GetCoefs(Coefs c[], float& gain);
    };
}
#endif  // BILINEAR_BUTTERWORTH_HPP
            
    