The challenge
Physiological signals are often recorded at different sampling rates. To analyse them together they must be brought onto a common time base without aliasing, and you need to know which measures tolerate a low sampling rate and which do not.
The solution
Custom Kaiser-window FIR low-pass filters in polyphase form for rational resampling between 10, 50 and 300 Hz, checked against SciPy. On the resampled signals, peak detection was built for ECG, PPG and blood pressure, and pulse transit time, heart-rate variability, beat-to-beat blood pressure and respiration rate from PPG were computed.
How it was built
The project was carried out in a group; I contributed across data processing, signal processing and evaluation. The work used short laboratory recordings of ECG, PPG and arterial pressure at 10, 50 and 300 Hz. Filter specifications were derived from the Nyquist limits, and the resampling was checked with round-trip tests (RMSE and signal-to-noise ratio) and spectral analysis. The 300 Hz recordings served as the reference for every measure.
Result
The custom polyphase resampling closely matched SciPy’s implementation. Low-frequency signals such as PPG and blood pressure tolerated round-trip resampling well, with signal-to-noise ratios above 30 dB, while ECG lost high-frequency content. At 10 Hz, R-peak detection and the heart-rate-variability measures broke down, while respiration rate and blood-pressure levels changed far less.
Context
A signal-processing project without machine learning, based on short laboratory recordings. The results show methodological effects of sampling rate, not physiological or clinical conclusions. Upsampling cannot recover information lost at a low sampling rate.