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 ?

 Réponse acceptée

Walter Roberson
Walter Roberson le 21 Août 2016

0 votes

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

8 commentaires

yasmeen hadadd
yasmeen hadadd le 21 Août 2016
Thank you so much
yasmeen hadadd
yasmeen hadadd le 21 Août 2016
But i need overlap between the values as 1:10 then from 2:11 and so on
Mudassir Rafi
Mudassir Rafi le 21 Août 2016
Modifié(e) : Walter Roberson le 21 Août 2016
arr=1:100;
for i=1:91
a=(arr(i:i+9));
mean(a)
end
yasmeen hadadd
yasmeen hadadd le 21 Août 2016
please solve this error "Index exceeds matrix dimensions".
Mudassir Rafi
Mudassir Rafi le 21 Août 2016
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;
Walter Roberson
Walter Roberson le 21 Août 2016
Thanks, Andrei

Connectez-vous pour commenter.

Plus de réponses (2)

Star Strider
Star Strider le 21 Août 2016

0 votes

‘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);
Andrei Bobrov
Andrei Bobrov le 21 Août 2016

0 votes

a - your vector;
out = movsum(a,[0 9],'Endpoints','discard')/10;

Catégories

En savoir plus sur Signal Processing Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by