libiir/src/docs/MainPage.dox

56 lines
2.1 KiB
Plaintext
Raw Normal View History

2010-11-08 15:18:07 +00:00
/* libiir/src/docs/MainPage.dox
*
* Copyright: ©2010, Laurence Withers.
* Author: Laurence Withers <l@lwithers.me.uk>
* License: GPLv3
*/
/*! \mainpage
This library allows the implementation of arbitrary IIR filters in C. It has
functions for generating and manipulating filters in terms of coefficients, for
chaining arbitrary filters together, and for generating coefficients for some
common types of filter. See \ref iir_structure for a definition of the IIR
filter equation.
\section creation Filter creation
At a high level, filters may be specified as strings. See \ref string_desc for
the required format and \ref iir_parse() for a C function returning a filter
instance from such a string.
Otherwise, the library user must first create a set of coefficients using
\ref iir_coeff_new(). Any number of filters can then be instantiated using that
set of coefficients with \ref iir_filter_new(), or the coefficients can be
chained on to the end of an existing filter instance with
\ref iir_filter_chain(). See \ref libiir_common_filters for functions to generate
2010-11-08 15:18:07 +00:00
coefficients.
\section operation Filter operation
The function \ref iir_filter() will actually process an input sample through the
coefficient chain and produce the output sample. Effectively it produces
<code>y(t)</code> given <code>x(t)</code>.
A filter may be copied, possibly including its state (for initial conditions),
using the function \ref iir_filter_copy().
\section tools Tools
In the <code>tests</code> directory are some simple tools for examining and
experimenting with filters. <code>run_filter</code> takes a stream of input
samples <code>x(t)</code> and produces the filtered output samples
<code>y(t)</code>.
Perhaps more interesting is <code>plot_filter</code> (requires GNUplot to be
installed) which will generate a Bode plot for a given filter chain. Note the
phase response can be a little rough due to the simplistic time-domain analysis
of the output signal's phase.
*/
/* options for text editors
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
vim: expandtab:ts=4:sw=4:syntax=doxygen
*/