A moving average function that returns an array that is equal in length to the input arrays (which can be row or column)
A variable window size, w, whenever possible, i.e.
w = 3;
means to use 3 data points on both sides of the point of interest (averaging 7 points total)
returns a ROW vector of moving average values
The following inputs:
x = [1,2,3,4]; y = [3,5,7,9]; w = 2;
should output:
ys = [3,5,7,9];
The following inputs:
x = [1,2,3,4,5]; y = [2,5.5,6,9.5,10]; w = 3;
should output:
ys = [2,4.5,6.6,8.5,10];
Note: the last test case is meant to be a challenge...
Solution Stats
Problem Comments
2 Comments
Solution Comments
Show comments
Loading...
Problem Recent Solvers6
Suggested Problems
-
574 Solvers
-
587 Solvers
-
530 Solvers
-
987 Solvers
-
I've got the power! (Inspired by Project Euler problem 29)
145 Solvers
More from this Author1
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
Tip: the x vector is useless, and the standard function movmean will not help since we have a window of variable size.
The problem statement is not very clear, but what this problem is asking you to do is compute a moving average where the desired window size is w elements on either side, and where the window shrinks near the edges of the input vector (while staying symmetric) in order to avoid extending beyond the endpoints of said vector.
Also, as @Rafael observed, the vector x is unnecessary and can be ignored; you're only working with y (and w).