Learn R Programming

signal (version 0.5)

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 compatability functions.

Arguments

Details

ll{ Package: signal Type: Package Version: 0.2 Date: 2006-06-01 License: GNU GPL version 2.0 or later } 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, linspace, 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, .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=.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