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 UIT_AQM1602 mbed
SignalProcessing/Biquad.hpp
- Committer:
- MikamiUitOpen
- Date:
- 2017-02-21
- Revision:
- 6:96b4f6ce2dc9
- Parent:
- 0:fa74b1130cc3
File content as of revision 6:96b4f6ce2dc9:
//--------------------------------------------------------------
// 縦続形 IIR フィルタで使う 1D タイプの 2 次のフィルタ
// Biquad filter of 1D type for IIR filter of cascade structure
// このクラスでは,係数は実行中に書き換えられることを想定している
//
// u[n] = x[n] + a1*u[n-1] + a2*u[n-2]
// y[n] = u[n] + b1*u[n-1] + b2*u[n-2]
// x[n] : input signal
// y[n] : output signal
// b0 = 1
//
// 2017/01/26, Copyright (c) 2017 MIKAMI, Naoki
//--------------------------------------------------------------
#ifndef IIR_BIQUAD_HPP
#define IIR_BIQUAD_HPP
#include "mbed.h"
// 2nd order IIR filter
namespace Mikami
{
class Biquad
{
public:
struct Coefs { float a1, a2, b1, b2; };
Biquad(const Coefs ck = (Coefs){0, 0, 0, 0})
{
SetCoefs(ck);
Clear();
}
void SetCoefs(const Coefs cf) { cf_ = cf; }
void GetCoefs(Coefs &cf) { cf = cf_; }
float Execute(float xn)
{
float un = xn + cf_.a1*un1_ + cf_.a2*un2_;
float yn = un + cf_.b1*un1_ + cf_.b2*un2_;
un2_ = un1_;
un1_ = un;
return yn;
}
void Clear() { un1_ = un2_ = 0; }
private:
Coefs cf_;
float un1_, un2_;
// disallow copy constructor and assignment operator
Biquad(const Biquad&);
Biquad& operator=(const Biquad&);
};
}
#endif // IIR_BIQUAD_HPP