In addition to C-style pointer-to-array and size arguments, allow for
C++-style std::vector<> interfaces. This also integrates nicely with
swig and allows the Python bindings to use native lists/tuples.
This commit adds a heuristic search function which finds -3dB points of
the specified filter. It first performs a 1000-point linear scan and
looks for transitions; it then performs a 20-point binary chop within
the transition band to better approximate the crossing point.
In order to fix the build on gcc-4.8, reorder the <complex.h> include to
always be first, followed by undefinition of the "complex" symbol, and
then finally include the C++ <complex> .
This commit adds libiir++, a C++ wrapper library which provides a true
object-oriented interface. The library has two primary objects, Coeff
(coefficient set) and Filter (filter instance) which are implemented
internally using the C objects.
The C++ implementation does produce additional copies of various bits
of information at setup time in order to better support querying the
structure of the filter at runtime. This is intended to be useful for a
future Python extension that will provide a filter experimentation lab.
When building a high-order Butterworth filter, split into 2nd-order
components, not 4th-order. Instability due to quantization effects has been
observed on real data even with double-precision floating point.
Adds functionality to compute the response of the filter's transfer function at
a given frequency. This uses the Z domain transform. A new test program
zplot_filter (which is compatible with the existing plot_filter) is provided.
Compute the DC gain of the filter (assuming 0 if unstable) and use that to
set the initial conditions of a filter as follows:
x(t<0)=x(0)
y(t<0)=x(0) × dc_gain