# math::filters(3tcl) 0.1 math "Tcl Math Library"

## Name

math::filters - Digital filters

## Synopsis

- package require Tcl 8.6
- package require TclOO
- package require math::filters ?0.1?

- ::math::filters::filterButterworth lowpass order samplefreq cutofffreq
- ::math::filters::filter coeffs data
- ::math::filters::filterObj new coeffs yinit
- $filterObj filter x
- $filterObj reset

## Description

The math::filters package implements digital filters, notably Butterworth low-pass and high-pass filters. The procedures allow to filter an entire data series as well as filter data one by one.

## PROCEDURES

The package defines the following public procedures:

::math::filters::filterButterworth lowpass order samplefreq cutofffreq

  Determine the coefficients for a Butterworth filter of given order. The coefficients are returned as a list of the x-coefficients, the y-coefficients and the scale. The formula is (n is the filter order):

                         n             n
          scale * y_k = sum x_(k-i) + sum y_(k-i)
                        i=0           i=1

  bool lowpass

    Generate a low-pass filter (1) or a high-pass filter (0)

  integer lowpass

    The order of the filter to be generated

  double samplefreq

    Sampling frequency of the data series

  double cutofffreq

    Cut-off frequency for the filter

::math::filters::filter coeffs data

  Filter the entire data series based on the filter coefficients.

  list coeffs

    List of coefficients as generated by filterButterworth (or in fact any similar list of coefficients)

  list data

    Data to be filtered

::math::filters::filterObj new coeffs yinit

  Create a filter object. The initial x data are taken as zero. The initial y data can be prescribed. If they are not given, they are taken as zero as well.

  list coeffs

    List of coefficients as generated by filterButterworth (or in fact any similar list of coefficients)

  list yinit

    (Optional) initial data for the filter result.

$filterObj filter x

  Filter a single value and return the result.

  double x

    The value to be filtered

$filterObj reset

  Reset the filter object (start anew)

## Keywords

digital, filtering

## Category

Mathematics

## Copyright

Copyright © 2020 by Arjen Markus