An online algorithm for R, S and T wave detection

Detects the Q, R and S wave and calculates the heart rate, determines two types of arythmia
Updated 3 Jul 2018

View License

%% Online Adaptive QRS detector
QRS detection,Detects Q , R and S waves:
Method ::
Uses the state-machine logic to determine different peaks in an ECG based on averaging and adaptive thresholds which are fluctuating in respect to the noise and the signal. It has the ability to confront noise by high pass filtering and baseline wander by low pass.
% The code is written in a way for future online implementation.
% ecg : raw ecg vector
% fs : sampling frequency
% view : display span of the signal e.g. 8 seconds
%% Outputs
% indexes and amplitudes of R_i, R_amp, etc
% heart_rate computed heart rate
% buffer_plot : processed signal
%% how to use
% for example after loading the ecg mat files in matlab call the
% function as below ;
% [R_i,R_amp,S_i,S_amp,T_i,T_amp]=peakdetect(EKG1,250,10);
%% Author : Hooman Sedghamiz contact ,
% Dont forget to reference if you found this script useful. I plan to improve the algorithm in the near future when I get some free time :) . It is quite simple now.
%% for referencing
Sedghamiz. H, "An online algorithm for R, S and T wave detection". September 2013. Link:

Cite As

Hooman Sedghamiz (2024). An online algorithm for R, S and T wave detection (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2012a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Find more on ECG / EKG in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

- better preallocation
-better preallocation

- Cleaned up the code
- Improved efficiency

References Updated!
Now, the function returns the Q wave index and amplitude too. I try to add the P wave detection scheme soon to the code.

error in plot solved.

the sample ECG file for testing the algorithm added

description added

Plots enhanced and adaptive thresholds are now nicely plotted

Algorithm Description added.

The algorithm description is added to the file for better understanding and some bugs resolved.

Some bugs removed and plots enhanced. The function is going to be enhanced in future to handle the shifted and elevated ST waves.