libiir/src/docs/MainPage.dox

61 lines
2.3 KiB
Plaintext
Raw Normal View History

2010-11-08 15:18:07 +00:00
/* libiir/src/docs/MainPage.dox
*
* Copyright: ©20102014, Laurence Withers.
2010-11-08 15:18:07 +00:00
* Author: Laurence Withers <l@lwithers.me.uk>
* License: GPLv3
*/
/*! \mainpage
This library allows the implementation of arbitrary %IIR filters in C. It has
2010-11-08 15:18:07 +00:00
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
2010-11-08 15:18:07 +00:00
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.
\section cpp C++
Two C++ wrapper objects, \ref IIR::Coeff and \ref IIR::Filter, are supplied which provide
a true object-oriented interface on top of the C implementation.
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
*/