The algorithm behind resting HR

I would like to figure it out how the watch decides my RHR as I see numbers in my 4hr watch graph than the RHR reported in GC. For example I got two times 49 but RHR in GC shows 52.

Also I see as I wake up in the morning already the watch decided my RHR for that day and as far as I see that numbers stay all day - should not be dynamically updated?

Maybe someone is able to clarify this better.

Thanks
  • Norwich Jeske

    I'm confused too, not only now with my new Fenix5 but with the 735xt when I had it. I've tried different things by myself to understand the RHR Garmin provide. I've found that the RHR relays on the time to go to sleep and wake up that you set in Garmin Connect. I´ve tried different scenarios but I'm. to able to understand the results. You can try several scenarios:
    -Set a sleep time longer than real. In that case it usually gives back a Higher RHR.
    -Set a sleep time shorter than real. If you sleep 6-8 hours you get a real RHR, if you have a short night the value is kind of random.

    Because of my job, kids, wife...life in general... I'm not a regular sleeper, I don't sleep every night, I don´t go to bed at the same time, I don´t wake up at the same time..so I'm kind of a "sleeping mess", so I don't know if that the cause or the consequence of the variability.....
  • Good question, I should have clarified in my original reply. I actually measured my heartrate independently using a chest belt on my old Ambit 2 and a Fitbit. I exported all datasets (i.e. not just looked at the graph online) into Matlab and compared them. Long story short - the measurements agreed within reasonable error margins expected of optical HR sensors. So in conclusion I can say that a) the data reported by garmin makes sense and roughly matches other sensor's data and b) that the reported RHR is apparently not derived from the data in the way stated in the FAQ, since the stated RHR values simply do not agree with the data. When three different devices including the Fenix consistently yield a heart rate of 50 over a 10-minute period and Garmin states my RHR as 60 then I know I cannot trust that calculation. Cheers from a fellow engineer :)!




    Sounds like something I would do as well. Well done!

    Interested if you can possibly determine the algorithm Garmin may be using based on your analysis. Do you see any patterns that emerge based on the data you have collected?
  • I'm confused too, not only now with my new Fenix5 but with the 735xt when I had it. I've tried different things by myself to understand the RHR Garmin provide. I've found that the RHR relays on the time to go to sleep and wake up that you set in Garmin Connect. I´ve tried different scenarios but I'm. to able to understand the results. You can try several scenarios:
    -Set a sleep time longer than real. In that case it usually gives back a Higher RHR.
    -Set a sleep time shorter than real. If you sleep 6-8 hours you get a real RHR, if you have a short night the value is kind of random.

    Because of my job, kids, wife...life in general... I'm not a regular sleeper, I don't sleep every night, I don´t go to bed at the same time, I don´t wake up at the same time..so I'm kind of a "sleeping mess", so I don't know if that the cause or the consequence of the variability.....


    I am very similar with respect to sleep including frequent international travel and I find my RHR in GC is reasonably stable even with this issue, varying typically 3-4 BPM from day to day over a week, unless I am ill or over train significantly and then I see much higher variance.

    Interesting that you see a difference simply changing the sleep time, do you mean you just manually change it in GC after the night has passed and the RHR is updated with significantly different values, or do you mean you are manually changing the sleep time window in advance every day prior to sleeping and seeing this difference?
  • Former Member
    0 Former Member over 8 years ago
    Sounds like something I would do as well. Well done!

    Interested if you can possibly determine the algorithm Garmin may be using based on your analysis. Do you see any patterns that emerge based on the data you have collected?


    I have as of yet insufficient data for a meaningful answer. However, it appears that all relavant data is contained in the zip-file you can download when you click "Export original" on the daily heart rate summary page. I have only parsed these files for heart rate data yet but I think sleep times should be in there as well. Interestingly, the sampling period for heart rate data is only 1 minute (sometimes less, always integer multiples of 60 seconds). So I think those values are already averaged over those time periods. My idea is to dig deeper into these files to automatically extract heartrate and sleep time data in order to correlate the stated RHR vaue with the actual measurement values. But this will have to wait for two weeks since I'm leaving for a conference/holidays tomorrow. On the other hand I'll have plenty of data to play with when I'm back :).
  • Yes I downloaded those files as well, but seemed like a lot of trouble to parse all those FIt files ;)

    Surprised that the data is only 60s recording basically, leads me to believe that this may not be all the data, but possibly it is.
  • How do you view the FIT files from all day HR? I tried in GoldenCheetah or other apps but they show nothing...
  • Former Member
    0 Former Member over 8 years ago
    Surprised that the data is only 60s recording basically, leads me to believe that this may not be all the data, but possibly it is.

    That surprised me as well, given that even my Fitbit Charge 2 stores the data in 5-10 second intervals (accessible through the Fitbit API).

    In any case, this is how I got the heartrate data out of the files:

    First, I converted them to .csv using the FIT SDK (https://www.thisisant.com/resources/fit). Then I hacked together a couple of Matlab scripts to very crudely parse the data. If anyone is interested (and has a Matlab license), here are my scripts: . Put all csv files in a subfolder named Fenix_5_OHR and run the script main_fenix.m. No guarantees - this is just a quick & dirty solution. (Also, csvimport.m is taken from the File Exchange). I'd love to port this to Python or something otherwise freely available, but I don't have the time right now and am just more proficient in Matlab. ;)
  • Ok, so is the consensus that your sleep time set in Garmin Connect Mobile or on the watch affects the RHR calculations/value?
  • Yet that's what Garmin have decided to capture as RHR :rolleyes:


    And what is the use of it? In exercise physiology/science it's waking resting heart rate that's used. Are we really expecting Garmin to rewrite history? I haven't looked specifically, but if someone can show me published research papers that have used RHR determined during sleep to provide measures used to monitor/control exercise performance I'd be grateful. I am by no means an expert (just a mere PhD student), but I have yet to see anything or have it suggested to me.
  • -Set a sleep time longer than real. In that case it usually gives back a Higher RHR.
    -Set a sleep time shorter than real. If you sleep 6-8 hours you get a real RHR, if you have a short night the value is kind of random.


    Which would verify my "theory" that the F5 takes the RHR when you are "awake" (thinking, that you are not sleeping), contrary to the official FAQ (linked earlier).