FFT-Based Heart Rate Estimation from PPG
FFT-based heart rate estimation computes the power spectrum of a PPG signal window and identifies the dominant spectral peak in the cardiac frequency band (0.5–4 Hz, corresponding to 30–240 bpm). This frequency-domain approach is robust to waveform distortion and amplitude variations that challenge time-domain peak detection.
The standard FFT HR pipeline applies a window function (Hanning or Hamming) to a 5–10 second PPG segment, computes the N-point FFT (typically N = 512–4096 with zero-padding), and identifies the frequency with maximum power in the 0.5–4 Hz cardiac band. Frequency resolution Δf = fs/N determines the minimum detectable heart rate change: at 25 Hz sampling with 1024-point FFT, Δf = 0.024 Hz ≈ 1.5 bpm, sufficient for most applications.
Harmonic analysis improves robustness: the cardiac PPG signal contains strong harmonics at 2× and 3× the fundamental frequency. A harmonic product spectrum (HPS) multiplies the power spectrum with downsampled versions of itself, sharpening the fundamental peak while suppressing non-harmonic interference. This is particularly effective when motion artifacts create spectral peaks near the cardiac frequency, as motion artifacts rarely exhibit the same harmonic structure as the cardiac signal.
Spectral peak tracking across successive windows can impose temporal continuity on heart-rate estimates. TROIKA combined signal decomposition, sparse spectral reconstruction, and a rule-based spectral peak tracker; it did not use NLMS artifact removal or Viterbi decoding. Zhang et al. reported 2.34 bpm average absolute error on recordings from 12 subjects during treadmill exercise. Short-time FFT approaches can update more frequently by overlapping windows, although the update interval does not increase the independent information in each window.
Frequently Asked Questions
What FFT window size is optimal for PPG heart rate estimation?
8-second windows with 50% overlap balance frequency resolution (0.125 Hz ≈ 7.5 bpm at fs=25 Hz without zero-padding) against temporal responsiveness. Zero-padding to 4096 points interpolates the spectrum for finer peak localization.
How does FFT handle non-integer heart rates?
Without zero-padding, FFT frequency bins are spaced at Δf = fs/N. Zero-padding interpolates between bins, and parabolic peak interpolation on the three bins surrounding the maximum provides sub-bin frequency accuracy to ~0.01 Hz (0.6 bpm).
When does FFT fail for PPG heart rate?
FFT fails when motion artifact power exceeds cardiac power in the same frequency band (e.g., running cadence matching heart rate). It also fails with very short windows (<3 seconds) where frequency resolution is insufficient to resolve cardiac peaks.