NOTE: this function is now available from the IoSR Matlab Toolbox as iosr.dsp.vsmooth.
SMOOTH Perform windowed smoothing on a vector using mathematical functions
Y = smooth(X,FRAME)
Y = smooth(X,FRAME,MODE)
Y = smooth(X,FRAME) smooths the input vector X by calculating the running RMS over a series of frames. FRAME specifies the frame characteristics; it can be set to:
a scalar - this will be used as the length of the frame, the window will be rectangular
a vector - this specifies the shape of the analysis window, the frame length will be length(frame).
Y = smooth(X,FRAME,MODE) allows the user to specify a different mathematical smoothing function. The options are:
'rms' - calculates the running rms (default)
'mean' - calculates the running mean (moving average filter)
'median' - calculates the running median
NOTE: SMOOTH uses a vectorized implementation that may be slow when X and/or FRAME_LENGTH are very large. The number of elements that are used for calculation is length(X)*FRAME_LENGTH. The algorithm vectorizes the operation by creating a matrix of indexes and extracting its diagonals. E.g. for a vector of length 4 and frame_length of 2, the algorithm creates a temporary zero-padded matrix x2 from which it creates a set of indexes:
It then extracts the diagonals where -length(x2)+frame_length<=k<=0, yielding:
this is used to index x2; operations are then performed along the rows.
Christopher Hummersone (2020). smooth (https://www.github.com/IoSR-Surrey/MatlabToolbox), GitHub. Retrieved .
Migrated to GitHub.