Filter primitives

Biquad
A two-pole, two-zero Infinite Impulse Response filter (a biquad). The default is a Butterworth filter with a cutoff at 0.1 times the sample frequency. The transfer function is

H(z) = \frac{n_0+n_1z^{-1}+n_2z^{-2}}{1-d_1z^{-1}+d_2z^{-2}}

FIRFloat
A Finite Impulse Response (FIR) filter. Coefficients are specified by the Coefficients parameter. The default coefficients give an 8th order, linear phase, lowpass filter. To read coefficients from a file, replace the default coefficients with < fileName, preferably specifying a complete path. Rational sampling rate changes, implemented by polyphase multi-rate filters, are also supported.
FIRCx
A complex FIR filter. Coefficients are specified by the Coefficients parameter. The default coefficients give an 8th order, linear phase, lowpass filter. To read coefficients from a file, use the syntax: < fileName, preferably specifying a complete path. Real and imaginary parts should be paired with parentheses, for example, (1.0, 0.0). Polyphase multi-rate filtering is also supported.
FIRFix
An FIR filter with fixed-point capabilities. The fixed-point coefficients are specified by the Coefficients parameter. The default coefficients give an 8th order, linear phase lowpass filter. To read coefficients from a file, replace the default coefficients with < fileName, preferably specifying a complete path. Polyphase multi-rate filtering is also supported.
RaisedCosine
An FIR filter with a magnitude frequency response that is shaped like the standard raised cosine or square-root raised cosine used in digital communications. By default, the primitive up-samples by a factor of 16, so 16 outputs will be produced for each input unless the InterpolationFactor parameter is changed.
Kalman_M
Output the state vector estimates of a Kalman filter using a one-step prediction algorithm.
GAL
A Gradient Adaptive Lattice filter.
GGAL
Ganged Gradient Adaptive Lattice filters.
IIRFloat
An Infinite Impulse Response (IIR) filter implemented in direct form II. The transfer function is of the form

H(z) = G \frac{N(1/z)}{D(1/z)}

where \fs1N() and \fs1D() are polynomials. The parameter Gain specifies G, and the floating-point arrays Numerator and Denominator specify \fs1N() and \fs1D(), respectively. Both arrays start with the constant terms of the polynomial and decrease in powers of \fs1z (increase in powers of \fs11/z). Note that the constant term of D is not omitted, as is common in other programs that assume it is always normalized to unity.

IIRFix
This is a fixed-point version of the IIRFloat primitive. The coefficient precision, input precision, accumulation precision, and output precision can all be specified separately.
LatticeForward
An FIR lattice filter. The default reflection coefficients form the optimal predictor for a particular 4th-order AR random process. To read other reflection coefficients from a file, replace the default coefficients with < fileName, preferably specifying a complete path.
LatticeRecursive
A recursive (IIR) lattice filter. The default coefficients implement the synthesis filter for a particular 4th-order AR random process. To read reflection coefficients from a file, replace the default coefficients with < fileName, preferably specifying a complete path.

Adaptive filters

LMSFloat
An adaptive filter using the Least-Mean Square (LMS) adaptation algorithm. The initial coefficients are given by the Coefficients parameter. The default initial coefficients give an 8th order, linear phase lowpass filter. To read default coefficients from a file, replace the default coefficients with < fileName, preferably specifying a complete path. This primitive, which is derived from FIRFloat, supports decimation, but not interpolation.
LMSCx
Complex version of the LMSFloat primitive.
LMSCxTkPlot
This primitive is just like the LMSCx primitive, but with an animated Tk display of the taps, plus associated controls.
LMSLeak
An LMS adaptive filter in which the step size is input (to the Step input) every iteration. In addition, the LeakFactor parameter specifies a leakage factor in the updates of the filter coefficients.
LMSFloatPlot
This primitive is just like the LMSFloat primitive, except that, in addition to the functions of LMSFloat, it makes a plot of the tap coefficients. It can produce two types of plots: a plot of the final tap values or a plot that traces the time evolution of each tap value. The time evolution is obtained if the value of the parameter Trace is YES.
LMSFloatTkPlot
This primitive is just like the LMSFloat primitive, but with an animated Tk display of the taps, plus associated controls.
LMSCxPlot
Complex version of LMSFloatPlot. Separate plots are generated for the magnitude and phase of the filter coefficients.

Block filters

AllPoleVar

This primitive implements an all pole filter with the denominator coefficients of the transfer function externally supplied. For each set of coefficients, a block of input samples is processed, all in one firing. The transfer function is

H(z) = \frac{1}{1-D(z)}

        where the coefficients of \fs1D(z) are externally supplied.

FIRFloatVar

This primitive implements an FIR filter with coefficients that are periodically updated from the outside. For each set of coefficients, a block of input samples is processed, all in one firing.

LatticeForwardVar

A block forward lattice filter. It is identical to the LatticeForward primitive, except that the reflection coefficients are updated each time the primitive fires by reading the Coefs input. The NumberOfCoefficients parameter indicates how many coefficient should be read. The BlockSize parameter specifies how many data samples should be processed for each set of coefficients.

LatticeRecursiveVar

A block recursive (IIR) lattice filter. It is identical to the LatticeRecursive primitive, except that the reflection coefficients are updated each time the primitive fires by reading the Coefs input. The NumberOfCoefficients and BlockSize parameters have the same interpretation as in the LatticeForwardVar primitive.