How to create a sliding window function over column vector M

If vector M is a column of 30000 points of temperature, How do I create a sliding window function that goes from 1 to 500, 2 to 501, 3 to 502 ...till the end. So the window length is 500.

 Accepted Answer

You can easily implement a loop for this
A = [1,2,3,4,5,6]'; % Easy vector to verify output
fun = @(x)mean(x); % Your function
WindowLength = 2;
Output = zeros(length(A)-WindowLength,1);
for idx = 1:length(A)-WindowLength
Block = A(idx:idx+WindowLength);
Output(idx) = fun(Block);
end
Output
Output =
2
3
4
5
Or, if you want to have it in many places, just create a function for it:
function output = SlideFun(x,WindowLength,fun)
Output = zeros(length(x)-WindowLength,1);
for idx = 1:length(x)-WindowLength
Block = x(idx:idx+WindowLength);
Output(idx) = fun(Block);
end
end

1 Comment

Since I found this and ran into this issue, maybe this will help someone else.
Output = zeros(length(x) + 1 - WindowLength,1);
for idx = 1:length(x) + 1 - WindowLength
Block = x(idx:idx + WindowLength - 1);
Output(idx) = fun(Block);
end

Sign in to comment.

More Answers (0)

Categories

Find more on Test Model Components in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!