Learn R Programming

signal (version 0.7-0)

signal-package: Signal processing

Description

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.

Arguments

encoding

latin1

Details

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").

References

http://en.wikipedia.org/wiki/Category:Signal_processing Octave Forge http://octave.sf.net Package matlab by P. Roebuck For Matlab/Octave conversion and compatibility, see http://37mm.no/mpy/octave-r.html by Vidar Bronken Gundersen and http://cran.r-project.org/doc/contrib/R-and-octave.txt by Robin Hankin.

Examples

Run this code
## 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:
freqz(bf)

## 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)

Run the code above in your browser using DataLab