upfirdn: Upsample, apply FIR filter, downsample

View source: R/upfirdn.R View source: R/RcppExports.R

upfirdnR Documentation

Upsample, apply FIR filter, downsample

Description

Filter and resample a signal using polyphase interpolation.

Usage

upfirdn(x, h, p = 1, q = 1)

Arguments

x

input data, specified as a numeric vector or matrix. In case of a vector it represents a single signal; in case of a matrix each column is a signal.

h

Impulse response of the FIR filter specified as a numeric vector or matrix. If it is a vector, then it represents one FIR filter to may be applied to multiple signals in x; if it is a matrix, then each column is a separate FIR impulse response.

p

Upsampling factor, specified as a positive integer (default: 1).

q

downsampling factor, specified as a positive integer (default: 1).

Details

upfirdn performs a cascade of three operations:

  1. Upsample the input data in the matrix x by a factor of the integer p (inserting zeros)

  2. FIR filter the upsampled signal data with the impulse response sequence given in the vector or matrix h

  3. Downsample the result by a factor of the integer q (throwing away samples)

The FIR filter is usually a lowpass filter, which you must design using another function such as fir1.

Value

output signal, returned as a vector or matrix. Each column has length ceiling(((length(x) - 1) * p + length(h)) / q).

Note

This function uses a polyphase implementation, which is generally faster than using filter by a factor equal to the downsampling factor, since it only calculates the needed outputs.

Author(s)

Geert van Boxtel, G.J.M.vanBoxtel@gmail.com.

See Also

fir1

Examples


x <- c(1, 1, 1)
h <- c(1, 1)

## FIR filter
y <- upfirdn(x, h)

## FIR filter + upsampling
y <- upfirdn(x, h, 5)

## FIR filter + downsampling
y <- upfirdn(x, h, 1, 2)

## FIR filter + up/downsampling
y <- upfirdn(x, h, 5, 2)


gsignal documentation built on Sept. 12, 2024, 6:27 a.m.