Cutoff frequency variable LPF and HPF by 160th-order FIR filter designed by window method usin Hamming window for ST Nucleo F401RE.

Dependencies:   UIT_ACM1602NI UIT_ADDA mbed

WindowingDesignLpfHpf/WindowingDesignLH.hpp

Committer:
MikamiUitOpen
Date:
2014-11-10
Revision:
0:ea9a0c65a7dd

File content as of revision 0:ea9a0c65a7dd:

//------------------------------------------------------------------------------
//  Design of FIR filter of LPF and HPF using window method -- Header
//
//  2014/11/09, Copyright (c) 2014 MIKAMI, Naoki
//------------------------------------------------------------------------------

#ifndef HAMMING_WINDOWING_DESIGN_HPP
#define HAMMING_WINDOWING_DESIGN_HPP

#include "mbed.h"

namespace Mikami
{
    class WindowingDesign
    {
    public:
        struct Coefs { float a1, a2, b1; };
        enum Type { LPF, HPF };

        // Constructor
        WindowingDesign(int order, float fs);

        //Destructor
        ~WindowingDesign()
        {
            delete[] hm_;
            delete[] wn_;
        }

        // Execution of design
        void Design(int order, Type pb, float fc, float hk[]);

    private:
        static const float PI_ = 3.1415926536f;
        const float FS_;    // Sampling frequency
        const float PI_FS_;
        
        float *hm_;     // For coefficients
        float *wn_;     // For Windwo
                
        int order_;     // Order
        float fC_;      // Cutoff frequency
        
        // Calculation of coefficients for LPF
        void LpfCoefficients();
        // Transform LPF to HPF
        void ToHpf();
        // Hamming window
        void HammWindow();
    };
}
#endif  // HAMMING_WINDOWING_DESIGN_HPP