Average of every nth value in a vector

2 vues (au cours des 30 derniers jours)
Bethany Skinner
Bethany Skinner le 4 Déc 2019
Commenté : Andrei Bobrov le 4 Déc 2019
I'm working on a project that will be measuring heart rate over long periods of time (8+ hours), and the data will be sampled every 0.1s. This will give me far more data than I would like/need! I'm looking to average the data to give me HR every 1 minute. The example data set that I'm working with at the moment is a vector of 137255x1 and I want to be able to average every 600 values. Is it possible to do this?
Thank you in advance!

Réponses (2)

Matt J
Matt J le 4 Déc 2019
tmp=conv(yourvector, ones(600,1)/600,'valid');
result=tmp(1:600:end)

Andrei Bobrov
Andrei Bobrov le 4 Déc 2019
Modifié(e) : Andrei Bobrov le 4 Déc 2019
Let A - your array 137255 x 1
n = numel(A);
TT = timetable(A,'RowTimes',(0:n-1)'*saconds(.1));
out = retime(TT,'minutely','mean');
or
i = ceil((1:numel(A))'/600);
out = accumarray(i,A,[],@mean);
  2 commentaires
Bethany Skinner
Bethany Skinner le 4 Déc 2019
Thanks for your answer - I've tried the first option and it returns the following error when running the final line:
"Error using timetable/retime. All variables in inpur timetables must be numeric, datetime, or duration when synchronizing using 'mean'."
Would you know how to fix this?
Andrei Bobrov
Andrei Bobrov le 4 Déc 2019
Please attach small interval of your "The example data..." as mat-file.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Import and Analysis dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by