2010-11-08 15:18:07 +00:00
|
|
|
/* libiir/src/docs/iir_structure.dox
|
|
|
|
*
|
|
|
|
* Copyright: ©2010, Laurence Withers.
|
|
|
|
* Author: Laurence Withers <l@lwithers.me.uk>
|
|
|
|
* License: GPLv3
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*! \page iir_structure Structure of IIR filter
|
|
|
|
|
|
|
|
For the purposes of this library, the following notation is used:
|
|
|
|
|
|
|
|
\li <code>x(t)</code>: value of input function at time \a t (\a t = 0, 1, 2, …)
|
|
|
|
\li <code>y(t)</code>: value of output at time \a t
|
|
|
|
\li <code>c[n]</code>: array of \c x(t) coefficients
|
|
|
|
\li <code>d[n]</code>: array of \c y(t) coefficients
|
|
|
|
|
|
|
|
This leads to a general IIR filter equation:
|
|
|
|
|
|
|
|
<code>y(t) = x(t).c[0] + x(t-1).c[1] + … + x(t-N).c[N] - y(t-1).d[0] - y(t-2).d[1] - … - y(t-1-M).d[M]</code>
|
|
|
|
|
2011-04-15 18:37:22 +01:00
|
|
|
For initial conditions, the library sets <code>y(t)</code> for t < 0 to
|
|
|
|
<code>x(0).G</code> (where <code>G</code> is the DC gain of the filter, or 0 if
|
|
|
|
it looks like the filter is unstable at DC), and <code>x(t)</code> for t < 0
|
|
|
|
to <code>x(0)</code>.
|
2010-11-08 15:18:07 +00:00
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* options for text editors
|
|
|
|
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
|
|
|
|
vim: expandtab:ts=4:sw=4:syntax=doxygen
|
|
|
|
*/
|