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-29
- Revision:
- 0:fa74b1130cc3
File content as of revision 0:fa74b1130cc3:
//------------------------------------------------------------------------
// 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
