| medfilt1 {gsignal} | R Documentation | 
1-D median filtering
Description
Apply a running median of odd span to the input x
Usage
medfilt1(x, n = 3, MARGIN = 2, na.omit = FALSE, ...)
Arguments
| x | Input signal, specified as a numeric vector, matrix or array. | 
| n | positive integer width of the median window; must be odd. Default: 3 | 
| MARGIN | Vector giving the subscripts which the function will be applied over. E.g., for a matrix 1 indicates rows, 2 indicates columns, c(1, 2) indicates rows and columns. Where X has named dimnames, it can be a character vector selecting dimension names. Default: 2 (columns). | 
| na.omit | logical indicating whether to omit missing values,
or interpolate then using a cubic spline function
( | 
| ... | other arguments passed to  | 
Details
This function computes a running median over the input x, using the
runmed function. Because of that, it works a little
differently than the 'Matlab' or 'Octave' versions (i.e., it does not produce
exactly the same values).
- missing values
- The 'Mablab' and 'Octave' functions have a - 'nanflag'option that allows to include or remove missing values. If inclusion is specifies, then the function returns a signal so that the median of any segment containing NAs is also NA. Because the- 'runmed'function does not include an- na.omitoption, implementing this functionality would lead to a considerable speed loss. Instead, a- na.omitparameter was implemented that allows either omitting NAs or interpolating them with a spline function.
- endpoint filtering
- Instead of the - 'zeropad'and- 'truncate'options to the- 'padding'argument in the 'Matlab' and 'Octave' functions, the present version uses the standard- endruleparameter of the- 'runmed'function, with options- keep,- constant, or- median.
Value
Filtered signal, returned as a numeric vector, matrix, or array, of
the same size as x.
Author(s)
Geert van Boxtel, G.J.M.vanBoxtel@gmail.com.
See Also
Examples
## noise suppression
fs <- 100
t <- seq(0, 1, 1/fs)
x <- sin(2 * pi * t * 3) + 0.25 * sin(2 * pi * t * 40)
plot(t, x, type = "l", xlab = "", ylab = "")
y <- medfilt1(x, 11)
lines (t, y, col = "red")
legend("topright", c("Original", "Filtered"), lty = 1, col = 1:2)