Matlab has movmean() but it I don't think it can move by groups of n elements. This demo below computes a moving average for values [1:n, 1*n+1:2*n, 2*n+1:3*n, 3*n+1:4*n, etc...]
If the number of data points is not dividible by n, the data are padded with NaN values and the last average will only consider non-nan values.
data = 1:22;
winSz = 5;
if rem(numel(data),winSz)>0
nanAppend = nan(winSz - rem(numel(data),winSz),1);
else
nanAppend = [];
end
dataMat = reshape([data(:); nanAppend], winSz, []);
movingAverage = mean(dataMat,1,'Omitnan');
To compute the means of groups that share endpoints (e.g. indices 1:5, 5:9, 9:13, ...), see this answer.
Best Answer