File Exchange

## SLIDEFUN

version 1.1 (6.09 KB) by

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

Updated

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.

Kim Bostroem

### Kim Bostroem (view profile)

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

K E

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.

Durga Lal Shrestha

### Durga Lal Shrestha (view profile)

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

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.

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.

 4 Feb 2015 1.1 fixed narginchk warning, treat V always as a vector even when it is a matrix
MATLAB 7 (R14)