Effacer les filtres
Effacer les filtres

datetime to samplenumber slow

2 vues (au cours des 30 derniers jours)
Lieke Numan
Lieke Numan le 23 Mai 2019
Commenté : Lieke Numan le 23 Mai 2019
I have a very long vector with datetime and corresponding heart rate value. Now I want to calculate median value for every 5 minutes (my sample frequency is 4 seconds). However, sometimes some samples are missing. To be able to calculate the median value of HR every 5 minutes, I need to know which samples these are. I did it like this:
t1=time(1)
t2=time(end)
time5min=t1:minutes(5:t2)
for j=[time5min]
[~,ind1]=min(abs(datenum(time)-datenum(j-1)));
[~,ind2]=min(abs(datenum(time)-datenum(j)));
HR_med(ind2)=nanmedian(HR(ind1:ind2));
end
This is, as my vector is very large, very time consuming. Is there a faster way to do this?

Réponses (1)

Steven Lord
Steven Lord le 23 Mai 2019
Do you want to compute the median for overlapping / sliding windows of 5 minutes, or do you want to compute it for each non-overlapping 5 minute window of your time period?
If you want overlapping bins, use movmedian specifying your datetime array as the SamplePoints and the K or NB/NF inputs as a duration of minutes(5).
If you want non-overlapping bins, take a look at the groupsummary function.
  1 commentaire
Lieke Numan
Lieke Numan le 23 Mai 2019
It is okay to have one median value for each 5 minutes, so no sliding window.
I have another function for which I need to use these timestamps. I have number of steps for each sample, and I want to calculate the number of steps per 5 minutes. So i take the difference in "steps(X)-steps(X-5minutes)".

Connectez-vous pour commenter.

Catégories

En savoir plus sur Signal Generation and Preprocessing 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