Cutoff frequency variable LPF, HPF, BPF, and BRF by FIR 160th-order filter.

Dependencies:   UIT_ACM1602NI UITDSP_ADDA mbed UIT_AQM1602

WindowingDesign/WindowingDesign.hpp

Committer:
MikamiUitOpen
Date:
2015-07-25
Revision:
3:24b6aa1a19ba
Parent:
0:ca94cfc90365

File content as of revision 3:24b6aa1a19ba:

//------------------------------------------------------------------------------
//  Design of FIR filter of 4 type passbands using window method -- Header
//
//  2014/12/07, 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, BPF, BRF };

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

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

        // Execution of design
        void Design(int order, Type pb, float fc1, float fc2,
                    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, BPF, or BRF
        void Transform(Type pb, float w0);
        // Hamming window
        void HammWindow();
    };
}
#endif  // HAMMING_WINDOWING_DESIGN_HPP