Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
FFTtools::IIRFilter Class Reference

#include <DigitalFilter.h>

Public Member Functions

 IIRFilter (size_t order, const double *acoeffs, const double *bcoeffs)
 
 IIRFilter (std::complex< double > gain, size_t nzeroes, const std::complex< double > *digiZeroes, size_t npoles, const std::complex< double > *digiPoles)
 
 IIRFilter (const FIRFilter &fir)
 
virtual void filterOut (size_t n, const double *w, double *out) const
 
virtual std::complex< double > transfer (std::complex< double > z) const
 
size_t getOrder () const
 
size_t nAcoeffs () const
 
size_t nBcoeffs () const
 
virtual size_t nDigiPoles () const
 
virtual size_t nDigiZeroes () const
 
virtual const std::complex< double > * getDigiPoles () const
 
virtual const std::complex< double > * getDigiZeroes () const
 
std::complex< double > getDigiGain () const
 
TString asString () const
 
virtual void Draw (const char *opt="", int color=1) const
 
- Public Member Functions inherited from FFTtools::DigitalFilter
virtual double * filter (size_t n, const double *w) const
 
virtual void filterGraph (TGraph *g, bool filterErrors=false) const
 
virtual void filterReplace (size_t n, double *w) const
 
virtual void impulse (size_t n, double *out, size_t delay=0) const
 
virtual double * impulse (size_t n, size_t delay=0) const
 
TGraph * impulseGraph (size_t n=101, double dt=1, size_t delay=50) const
 
virtual void response (size_t n, TGraph **amplitude_response, TGraph **phase_response, TGraph **group_delay=0) const
 
virtual TGraph * amplitudeResponse (size_t n=101) const
 
virtual TGraph * phaseResponse (size_t n=101) const
 
virtual TGraph * groupDelay (size_t n=101) const
 
double avgDelay (double min_freq=0, double max_freq=1, int n=101) const
 
virtual TPad * drawResponse (TPad *c=0, int n=101, int delay=50) const
 

Protected Member Functions

void computePolesAndZeroes ()
 
void computeCoeffsFromDigiPoles ()
 

Protected Attributes

size_t order
 
std::vector< double > acoeffs
 
std::vector< double > bcoeffs
 
std::complex< double > digi_gain
 
std::vector< std::complex< double > > digi_poles
 
std::vector< std::complex< double > > digi_zeroes
 
TGraph * gzero
 
TGraph * gpole
 

Detailed Description

IIR filter implementation

An IIR Filter is a rational function of z^-1 (which, of course, is e^(-jw), the unit delay) )

     b0 + b1 z^-1 + b2 z^-2 + ... 

H(z) = ----------------------------— a0 + a1 z^-1 + a2 z^-2 + ...

a0 is typically 1 (otherwise b0 and a0 are degenerate), but this isn't enforced.

Definition at line 255 of file DigitalFilter.h.

Inheritance diagram for FFTtools::IIRFilter:
Inheritance graph
[legend]
Collaboration diagram for FFTtools::IIRFilter:
Collaboration graph
[legend]

Constructor & Destructor Documentation

FFTtools::IIRFilter::IIRFilter ( std::complex< double >  gain,
size_t  nzeroes,
const std::complex< double > *  digiZeroes,
size_t  npoles,
const std::complex< double > *  digiPoles 
)
inline

initialize filter from digital zeroes/poles/gain

Definition at line 264 of file DigitalFilter.h.

FFTtools::IIRFilter::IIRFilter ( const FIRFilter fir)

initialize filter from an FIR filter. If the FIR filter has a large delay, this might end up having quite a large order

Definition at line 702 of file DigitalFilter.cxx.

Member Function Documentation

void FFTtools::IIRFilter::Draw ( const char *  opt = "",
int  color = 1 
) const
virtual

Draw pole zero diagram

Allowed options: same - draw on top circ - draw unit circle pol - draw polar axis

Definition at line 740 of file DigitalFilter.cxx.

void FFTtools::IIRFilter::filterOut ( size_t  n,
const double *  w,
double *  out 
) const
virtual

Filter input with previously allocated output.

Parameters
nsize of waveform to filter
winput waveform
outoutput waveform (assumed to be allocated)

Implements FFTtools::DigitalFilter.

Definition at line 549 of file DigitalFilter.cxx.


The documentation for this class was generated from the following files: