1. A computer implemented method to determine a heart rate for a subject, comprising: detecting a heartbeat signal from the subject; extracting a set of two or more types of heartbeat features from the heartbeat signal; accessing, from stored data, one or more heartbeat patterns and one or more noise patterns, the one or more heartbeat patterns comprising at least one of: (a) one or more heartbeat models and (b) one or more heartbeat templates, and the one or more noise patterns comprising at least one of: (c) one or more noise models and (d) one or more noise templates; determining whether the set of two or more types of heartbeat features more closely matches the one or more heartbeat patterns or the one or more noise patterns; if the set of two or more types of heartbeat features more closely matches the one or more noise patterns, determining that the set of two or more types of heartbeat features is not to be used to update the heart rate for the subject; if the set of two or more types of heartbeat features more closely matches the one or more heartbeat patterns, determining that the set of two or more types of heartbeat features represents a heartbeat candidate; performing post-processing to determine that the heartbeat candidate represents a heartbeat; and updating the heart rate for the subject based on timing of the heartbeat.