File Exchange

## slidefun

version 5.0.0.0 (6.32 KB) by Jos (10584)

### Jos (10584) (view profile)

apply function to a moving window over a vector (v5, jan 2018)

Updated 29 Jan 2018

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.

Part of it's functionality has been implemented in base matlab (e.g. by movsum, movmean)

### Cite As

Jos (10584) (2020). slidefun (https://www.mathworks.com/matlabcentral/fileexchange/12550-slidefun), MATLAB Central File Exchange. Retrieved .

huseyin celik

### huseyin celik (view profile)

Useful function for biomechanical data analysis, works as described.

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.