Video 26: ECG's QRS Peak Detection and Heart Rate Estimation using Discrete Wavelet Transform (DWT) in MATLAB

Hello Viewers, in this video, a scheme is presented to detect QRS complex (R-Peaks) of an ECG signal using un-decimated Discrete Wavelet Transform (DWT). It is shown that how band pass filtering of ECG signal is achieved to preserve R-peaks using DWT which is superior than frequency selective BPF. Also by counting total number of R-peaks, Heart Rate (in beats per minute) is  calculated. Also robustness of the proposed scheme is shown on different types of ECG signals taken from MIT-BIH arrhythmia and ECG-ID databases from PhysioNet.  

  • This video has following contents:
  • What is QRS Complex in ECG signal? 
  • ECG Database on PhysioNet.
  • An introduction to Symlet4 wavelet.
  • Proposed DWT based Algorithm for R-Peak detection and Heart Rate estimation.
  • MATLAB Code for R-Peak detection and Heart Rate estimation. 

Links of previous videos:

1. ECG signals Classification using CWT and Deep Neural Network in MATLAB: Click Here

2. Continuous Wavelet Transform of 1-D signals using PYTHON and MATLAB: Click Here

Other Links:

1. PhysioNet:​

2. PhysioNet Databases:​

3. WFDB-SWIG toolbox for MATLAB:

4. PhysioNet Bank ATM:

Download Resources: 

1. ECG Test Signals: Download


  1. Hello sir, its looks like a great application of wavelet transform. Can you share the matlab code i want to implement it on fpga so that a dedicated hardware can be designed.

  2. Hello sir,
    your videos are very useful sir.
    i need a help from u sir
    when i am simulating Rpeaks, it is showing following error sir. Can u help me sir.

    Error using findpeaks>parse_inputs (line 281)
    No value was given for 'MinPeakDistance,50'. Name-value pair arguments require
    a name followed by a value.

    Error in findpeaks (line 134)
    = parse_inputs(Yin,varargin{:});

    Error in Untitled3 (line 18)
    [Rpeaks,locs] = findpeaks(y,t,'MinPeakHeight',8*avg,'MinPeakDistance,50');