%% Moving-Average Filter
% A moving-average filter is a common method used for smoothing noisy data. This example uses the filter function to compute averages along a vector of data.
% Create a 1-by-100 row vector of sinusoidal data that is corrupted by random noise.

t = linspace(-pi,pi,100);
rng default  %initialize random number generator
x = sin(t) + 0.25*rand(size(t));

% A moving-average filter slides a window of length windowSize along the data, computing averages of the data contained in each window. The following difference equation defines a moving-average filter of a vector x:
%  y(n)=\frac{1}{windowSize}\left(x(n)+x(n-1)+...+x(n-(windowSize-1))\right).
%
% For a window size of 5, compute the numerator and denominator coefficients for the rational transfer function.

windowSize = 5; 
b = (1/windowSize)*ones(1,windowSize);
a = 1;

%
% Find the moving average of the data and plot it against the original data.

y = filter(b,a,x);

plot(t,x)
hold on
plot(t,y)
legend('Input Data','Filtered Data')

% Copyright 2012 The MathWorks, Inc.