# decimate: Decimate or downsample a signal In signal: Signal Processing

## Description

Downsample a signal by a factor, using an FIR or IIR filter.

## Usage

 `1` ```decimate(x, q, n = if (ftype == "iir") 8 else 30, ftype = "iir") ```

## Arguments

 `x` signal to be decimated. `q` integer factor to downsample by. `n` filter order used in the downsampling. `ftype` filter type, `"iir"` or `"fir"`

## Details

By default, an order 8 Chebyshev type I filter is used or a 30-point FIR filter if `ftype` is `'fir'`. Note that `q` must be an integer for this rate change method.

Makes use of the `filtfilt` function with all its limitations.

## Value

The decimated signal, an array of length `ceiling(length(x) / q)`.

## Author(s)

Original Octave version by Paul Kienzle pkienzle@user.sf.net. Conversion to R by Tom Short.

## References

Octave Forge https://octave.sourceforge.io/

`filter`, `resample`, `interp`

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12``` ```# The signal to decimate starts away from zero, is slowly varying # at the start and quickly varying at the end, decimate and plot. # Since it starts away from zero, you will see the boundary # effects of the antialiasing filter clearly. You will also see # how it follows the curve nicely in the slowly varying early # part of the signal, but averages the curve in the quickly # varying late part of the signal. t <- seq(0, 2, by = 0.01) x <- chirp(t, 2, 0.5, 10, 'quadratic') + sin(2*pi*t*0.4) y <- decimate(x, 4) # factor of 4 decimation plot(t, x, type = "l") lines(t[seq(1,length(t), by = 4)], y, col = "blue") ```

### Example output

```Attaching package: 'signal'

The following objects are masked from 'package:stats':

filter, poly
```

signal documentation built on May 25, 2021, 9:06 a.m.