---
name: "filtergen"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/filtergen/3tcl"
---

# filtergen(3tcl)

Digital filters

```

```

## NAME

math::filters - Digital filters

## SYNOPSIS

package require **Tcl 8.6 9**

package require **TclOO**

package require **math::filters ?0.3?**

**::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 (c) 2020 by Arjen Markus
```
