File Exchange

image thumbnail

SLIDEFUN

version 1.1 (6.09 KB) by

apply function to a moving window over a vector (v4.1, feb 2015)

12 Downloads

Updated

View License

R = SLIDEFUN(FUN, W, V) evaluates the function FUN to a moving window of W consecutive elements of the vector V.
The function FUN is specified by a function handle or a function name and should return a scalar for a vector input. W specifies the size of the window and should be a positive integer. At the two edges of the vector less than W elements will be used. R will have the same size as V.

Effectively SLIDEFUN applies the function FUN to a moving window of consecutive elemens V(x0:(x0+W)) using FEVAL, and returns the result in R(x).

The window [x0:(x0+W)] is relative to the current point x in V. R = SLIDEFUN(FUN, W, V, WINDOWMODE) denotes the type of windowing being used: central (default), backward and forward.

R = SLIDEFUN(FUN,W,V,WINDOWMODE, P1,P2,...) provides for aditional parameters which are passed to the function FUN.

Example 1) Sliding max filter - return the maximum of every three consecutive elements:
V = [1 2 3 9 4 2 1 1 5 6] ;
R = slidefun(@max, 3, V)
% -> [2 3 9 9 9 4 2 5 6 6]
% So R(i) = max(R(i-1:i+1)) ;
% and R(1) = max(V(1:2))

More examples are provided in the help section.

Comments and Ratings (11)

Kim Bostroem

seems like 'forward' and 'backward' doesn't work...

K E

K E (view profile)

Very useful. I use this all the time. Wish it was part of Matlab. Also wonder if there is a way for it to run faster for long time series.

It would be good if this function checks that input is vector. Otherwise for matrix it produces erroneous values.

Chad Greene

Chad Greene (view profile)

Works perfectly; thanks for sharing.

Jos (10584)

Jos (10584) (view profile)

There is no stdev function in matlab. Do you mean STD?

slidefun(@std,25,Ngrid(4,:))

Mar

Mar (view profile)

I can't get this to work for stdev.
NgridSD = slidefun(@stdev,25,Ngrid(4,:));
??? Error using ==> feval
Undefined function or method 'stdev' for input arguments of type 'double'.

Any ideas? Thank you.

Peter

Peter (view profile)

Very helpful for technical analysis of stock data. Thank you good sir.

Carlos Adrian Vargas Aguilera

I just found I haven't rate it. Well done, and waiting for annonymous function for inputs... :)

Carlos

Dan Haeg

Very useful code for me, thanks for plugging it on CSSM so I could find it.

John D'Errico

Nice, well written utility. It allows you to apply any general function on a moving window. Good help, examples, error checks, well done.

Updates

1.1

fixed narginchk warning, treat V always as a vector even when it is a matrix

MATLAB Release
MATLAB 7 (R14)
Acknowledgements

Inspired by: movingstd & movingstd2

Inspired: Sound Pressure Level Calculator

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today