Compute arbitrary function in sliding window
This function can compute any function which operates on column-oriented data over a sliding centered window on column-vector data. It is vectorized and thus trades memory-usage for speed.
For small window sizes this outperforms functions like SMOOTH. But it is not just a fast moving average. You can specify any function handle that operates on column-oriented data and produces a scalar output, e.g. median, std, prctile (with a scalar 'p'), range, min, sum. But you could also create your own function. For example the (quite obscure) function handle
@(X) all(bsxfun(@gt,X(ceil(size(X,1)/2),:),X(1:floor(size(X,1)/2),:)),1) &
all(bsxfun(@ge,X(ceil(size(X,1)/2),:),X(ceil(size(X,1)/2)+1:end,:)),1)
will return a logical array indicating local maxima over a given window size reporting only the first maximum at plateaus.
Cite As
David J. Mack (2024). Compute arbitrary function in sliding window (https://www.mathworks.com/matlabcentral/fileexchange/58949-compute-arbitrary-function-in-sliding-window), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- Industries > Medical Devices > Cardiology > ECG / EKG >
Tags
Acknowledgements
Inspired by: Summarizes data using a sliding window without loops
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.0.0.0 | Updated description. |