signal.package: Signal processing

signal-packageR Documentation

Signal processing


A set of generally Matlab/Octave-compatible signal processing functions. Includes filter generation utilities, filtering functions, resampling routines, and visualization of filter models. It also includes interpolation functions and some Matlab compatibility functions.


The main routines are:

Filtering: filter, fftfilt, filtfilt, medfilt1, sgolay, sgolayfilt

Resampling: interp, resample, decimate

IIR filter design: bilinear, butter, buttord, cheb1ord, cheb2ord, cheby1, cheby2, ellip, ellipord, sftrans

FIR filter design: fir1, fir2, remez, kaiserord, spencer

Interpolation: interp1, pchip

Compatibility routines and utilities: ifft, sinc, postpad, chirp, poly, polyval

Windowing: bartlett, blackman, boxcar, flattopwin, gausswin, hamming, hanning, triang

Analysis and visualization: freqs, freqz, impz, zplane, grpdelay, specgram

Most of the functions accept Matlab-compatible argument lists, but many are generic functions and can accept simpler argument lists.

For a complete list, use library(help="signal").


Most of these routines were translated from Octave Forge routines. The main credit goes to the original Octave authors:

Paul Kienzle, John W. Eaton, Kurt Hornik, Andreas Weingessel, Kai Habel, Julius O. Smith III, Bill Lash, André Carezia, Paulo Neis, David Billinghurst, Friedrich Leisch

Translations by Tom Short (who maintained the package until 2009).

Current maintainer is Uwe Ligges


Octave Forge

Package matlab by P. Roebuck

For Matlab/Octave conversion and compatibility, see by Vidar Bronken Gundersen and by Robin Hankin.


## The R implementation of these routines can be called "matlab-style",
bf <- butter(5, 0.2)
freqz(bf$b, bf$a)
## or "R-style" as:

## make a Chebyshev type II filter:
ch <- cheby2(5, 20, 0.2) 
freqz(ch, Fs = 100)  # frequency plot for a sample rate = 100 Hz

zplane(ch) # look at the poles and zeros

## apply the filter to a signal
t <- seq(0, 1, by = 0.01)                     # 1 second sample, Fs = 100 Hz
x <- sin(2*pi*t*2.3) + 0.25*rnorm(length(t))  # 2.3 Hz sinusoid+noise
z <- filter(ch, x)  # apply filter
plot(t, x, type = "l")
lines(t, z, col = "red")

# look at the group delay as a function of frequency
grpdelay(ch, Fs = 100)

signal documentation built on June 26, 2024, 9:06 a.m.