<!-- Converted to DocBook/SGML by Kevin Conder -->
<refentry id="filter2">
  <refmeta>
    <refentrytitle>filter2</refentrytitle>
  </refmeta>
 
  <refnamediv>
    <refname>filter2</refname>
    <refpurpose>
      Performs filtering using a transposed form-II digital filter lattice with no time-varying control.
      <indexterm id="IndexFilter2"><primary>filter2</primary></indexterm>
    </refpurpose>
  </refnamediv>
 
  <refsect1>
    <title>Description</title>
    <para>
      General purpose custom filter with time-varying pole control. The filter coefficients implement the following difference equation:
      <literallayout>
(1)*y(n) = b0*x[n] + b1*x[n-1] +...+ bM*x[n-M] - a1*y[n-1] -...- aN*y[n-N]
      </literallayout>
    </para>

    <para>
      the system function for which is represented by:
      <literallayout>
           B(Z)      b0 + b1*Z<superscript>-1</superscript>  + ... + bM*Z<superscript>-M</superscript>
  H(Z)  =  ----  =  --------------------------
           A(Z)       1 + a1*Z<superscript>-1</superscript>  + ... + aN*Z<superscript>-N</superscript>
      </literallayout>
    </para>
  </refsect1>
 
  <refsect1>
    <title>Syntax</title>
    <synopsis>ar <command>filter2</command> asig, iM, iN, ib0, ib1, ..., ibM, ia1, ia2, ..., iaN</synopsis>

    <synopsis>kr <command>filter2</command> ksig, iM, iN, ib0, ib1, ..., ibM, ia1, ia2, ..., iaN</synopsis>
  </refsect1>
 
  <refsect1>
    <title>Initialization</title>
    <para>
      At initialization the number of zeros and poles of the filter are specified along with the corresponding zero and pole coefficients. The coefficients must be obtained by an external filter-design application such as Matlab and specified directly or loaded into a table via <link linkend="GEN01"><citetitle>GEN01</citetitle></link>.
    </para>
  </refsect1>
 
  <refsect1>
    <title>Performance</title>
    <para>
      The<emphasis> filter2</emphasis> opcodes perform filtering using a transposed form-II digital filter lattice with no time-varying control.
    </para>

    <para>
      Since <emphasis>filter2</emphasis> implements generalized recursive filters, it can be used to specify a large range of general DSP algorithms. For example, a digital waveguide can be implemented for musical instrument modeling using a pair of <link linkend="delayr"><citetitle>delayr</citetitle></link> and <link linkend="delayw"><citetitle>delayw</citetitle></link> opcodes in conjunction with the <emphasis>filter2</emphasis> opcode.
    </para>
  </refsect1>
 
  <refsect1>
    <title>Examples</title>
    <para>
      A first-order linear-phase lowpass linear-phase FIR filter operating on a k-rate signal:

      <informalexample>
        <programlisting>
k1 <emphasis>filter2</emphasis> ksig, 2, 0, 0.5, 0.5   ;; k-rate FIR filter
        </programlisting>
      </informalexample>
    </para>
  </refsect1>
 
  <refsect1>
    <title>See Also</title>
    <para>
      <link linkend="zfilter2"><citetitle>zfilter2</citetitle></link>
    </para>
  </refsect1>
 
  <refsect1>
    <title>Credits</title>
    <para>
      <simplelist>
        <member>Author: Michael A. Casey</member>
        <member>M.I.T.</member>
        <member>Cambridge, Mass.</member>
        <member>1997</member>
      </simplelist>
    </para>
  </refsect1>
</refentry>
