if i have data a and i want to mean or average every 10 values as 1:10, 2:11, 3:12 and as so on for length of data ?

 Accepted Answer

mean(reshape(YourData, 10, []))

8 Comments

Thank you so much
But i need overlap between the values as 1:10 then from 2:11 and so on
arr=1:100;
for i=1:91
a=(arr(i:i+9));
mean(a)
end
please solve this error "Index exceeds matrix dimensions".
value of i should be 9 less than the last dimension of array (i.e.a in your case)
cs = cumsum(YourData);
moving_average = (cs(10:end) - cs(1:end-9))/10;
Hi Walter! Small correcting.
cs = cumsum(YourData(:));
moving_average = (cs(10:end) - [0;cs(1:end-10)])/10;
Thanks, Andrei

Sign in to comment.

More Answers (2)

‘But i need overlap between the values as 1:10 then from 2:11 and so on’
Use a moving average filter:
Heart_pulse_avg = filter(ones(1,10), 10, Heart_pulse);
a - your vector;
out = movsum(a,[0 9],'Endpoints','discard')/10;

Categories

Find more on Signal Processing Toolbox 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!