Next Article in Journal
Trustworthy Assessment of University Competitiveness Using a Neural Network Model
Previous Article in Journal
Hybrid Intelligent Detection Approach for Android Malware Using Gradient-Boosting Tree Ensembles and Correlation–Differential Evolution Feature Selection
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Robust Electrocardiographic R-Peak Detection via Wave Morphological Model Using Weighted Directed Graphs

by
Warinchai Suwannoppadol
1,2,
Nipon Theera-Umpon
1,3,* and
Sansanee Auephanwiriyakul
1,4
1
Computational Intelligence Research Laboratory, Faculty of Engineering, Chiang Mai University, Chiang Mai 50200, Thailand
2
Ekamai International School, Bangkok 10110, Thailand
3
Department of Electrical Engineering, Faculty of Engineering, Chiang Mai University, Chiang Mai 50200, Thailand
4
Department of Computer Engineering, Faculty of Engineering, Chiang Mai University, Chiang Mai 50200, Thailand
*
Author to whom correspondence should be addressed.
Information 2026, 17(6), 535; https://doi.org/10.3390/info17060535
Submission received: 15 April 2026 / Revised: 19 May 2026 / Accepted: 24 May 2026 / Published: 1 June 2026
(This article belongs to the Section Biomedical Information and Health)

Abstract

Detecting R-peak location is very important in electrocardiogram (ECG) analysis. Most existing algorithms focus on separating extreme data points to find R-peaks without ECG wave morphology consideration. As a result, we propose a new algorithm using graph theory to integrate non-linear connections between states. Specifically, we design a weighted directed graph to represent the structure of an ECG wave where each vertex corresponds to a time index and a state of an ECG signal. Therefore, traversing each edge corresponds to labeling a contiguous segment of the signal as a specific ECG state. Each edge also contains a weight corresponding to a cost function and bias. Dynamic programming is used to determine the shortest path corresponding to the optimal labeling by iterating through the topological ordering of the graph. Three logical flags based on the constraints of the ECG signal’s slope, difference, and shape are also introduced and the slope thresholding value for an R-peak is made adaptive to combat varying morphologies. Four datasets were utilized, with the proposed method showing great potential, achieving an accuracy of 99.07% for the MIT-BIH dataset, 99.46% for the QT dataset, 98.05% for the INCART dataset, and 99.23% for the ST CHANGE dataset.

1. Introduction

An electrocardiogram (ECG) is a signal that represents the electrical activity of the heart. ECG waves consist of many components or parts, namely the P-wave, P-R interval, Q-wave, R-peak, S-wave, S-T interval, and T-wave [1]. Notably, R-peak detection is very important and well researched in ECG analysis as R-peaks are the most prominent feature of an ECG wave [2]. R-peak location can be used in various ways in ECG analysis. One such way is heart rate variability (HRV) analysis, where R-peak location can be used for R-R interval calculation. HRV analysis has many applications in analyzing human body conditions. For example, HRV can be used to analyze the state of the autonomic nervous system, detect cardiac diseases, indicate psychological stress, and evaluate cardiovascular fitness [3,4,5]. Similarly, detection of P-waves and T-waves can also help detect waves with irregular morphologies, as their irregular shape can possibly help indicate some cardiac conditions, such as arrhythmias or ischemia [6,7].
There are many methods that have been proposed for R-peak detection. For example, a wavelet transform and a Shannon energy envelope were used to denoise the ECG signal and estimate R-peak locations. Then, the R-peak locations were found by using R-R intervals [8]. Parabolic fitting and thresholding were utilized to compute R-peaks in wearable devices with minimal computation costs [9]. There also exist more classic algorithms, such as the ones proposed by Pans and Tompkins [2]. In the past years, new techniques such as machine learning and deep learning have also been used to achieve incredible performances. Specifically, a deep learning framework called a Residual U-Net (ResU-Net), which is a combination of residual networks and the U-Net architecture, was introduced and achieved good results in R-peak detection [10]. One-dimensional Convolutional Neural Networks (CNNs), a classic deep learning model, along with a verification model, were utilized to post-process false positives [11]. In addition, more lightweight algorithms have also been proposed. For example, Bai et al. proposed an encoder-decoder network using Multi-Scale Dynamic Feature Convolution Plus (MSDFC+) that could be implemented in real-time for monitoring cardiac activity [12]. A method using depthwise separable convolution along with an 8-layer U-net network was proposed, resulting in a model with low computational complexity which can be used in portable devices [13]. More interpretable methods have also been proposed in recent years, such as the one proposed by Hsieh et al., which uses features such as relative height and local slope to create an integrated score that differentiates R-peaks from other datapoints [14]. In short, R-peak detection algorithms revolve around preprocessing with band-pass filtering or wavelet transform, detection functions such as thresholds, shape fitting, or machine learning classifiers, and sometimes verifying or postprocessing R-peak locations using R-R interval information.
However, these studies often focus on separating extreme data points rather than considering the morphology of the whole ECG wave. Therefore, we propose using graph theory to aid in defining the ECG structure. Graphs are non-linear structures that can capture relationships between different states. The definition for graphs will be given later on. Based on our literature review, only a small number of research works have utilized graphical signal processing in ECG analysis. In Ref. [15], the visibility graphs were proposed to help detect R-peaks. The visibility graphs assign directed edges between values that are visible to each other with a straight line. As a result, R-peaks are then amplified, and classic thresholding techniques can be used for R-peak detection. In Ref. [16], a graphical mean changepoint model (GCCD) with a novel graph building algorithm was proposed. The GCCD model works by identifying sudden changes in datapoints to differentiate them. However, the model performs with local training, meaning that they create a new model for every record, which is trained or built with a specific record’s wave morphology. Overall, research on the usage of graphs in ECG segmentation is quite sparse, with authors using differently defined graphs to capture different properties of ECG waves. This makes the task of labeling R-peaks using graphs an interesting area with significant potential for improvement.
Thus, this paper proposes an ECG analysis algorithm that incorporates graph theory to capture the relationship in non-linear states to detect R-peaks. The workflow diagram of the proposed R-peak detection algorithm is shown in Figure 1. Our method works by predefining the possible transition states of an ECG signal as a graph and defining the possible lengths of each state. Specifically, we build a weighted directed graph named “ECGMorphGraph” that takes into account the ECG wave morphology. Then, we transform the graph to correspond to a time series where each vertex in the original graph is copied for each time index. Each edge in each copy is then shifted to connect the current vertex to the vertices of previous time indices that correspond to the possible states before the current states, which are derived from the possible length of each state. This can be done by stacking up the ECGMorphGraph and forming a layered ECGMorphGraph. Thus, each vertex in the transformed graph represents the possibility of labeling a contiguous segment of the ECG signal. Taking advantage of this fact, we introduce two logical flags based on signal level constraints and another flag based on a shape constraint to regulate the morphology of each specific segment of an ECG wave. Then, the optimal labeling is found by using dynamic programming. The details of all processes in this workflow can be found in Section 3.
The main contributions of this paper are as follows:
(1)
This paper contributes to the unique methodology proposed. It proposes a new method in R-peak detection with comparable performance to the state-of-the-art, while also contributing by demonstrating how graphs can be used in biological signal processing in general, and in turn, provides a usable framework that could be further developed for other signal processing problems. The graph-based segmentation framework is important because it is a general framework that can be applied to signal processing problems that are based on chronological information, while maintaining a relatively simple computational cost.
(2)
This paper also contributes by showing the benefits of using a graph-based global segmentation framework rather than data-driven deep learning/machine learning models, such as the ability to simultaneously label other waveforms such as P-waves or T-waves and a more interpretable labeling process when compared to black box learning models. Specifically, the manually defined graph structure allows for much more interpretability and flexibility when compared to black box models. Thresholds can be adjusted such that we can guarantee that R-peaks can be detected even if they are smaller than T-waves. Additionally, explicit states can be added to ensure irregular R-peak morphologies can be detected, such as upside-down waves.
This paper is organized as follows. The next section describes the four datasets used in our experiments. The proposed method is elaborated in Section 3. Section 4 shows the experimental results, while they are correspondingly discussed in Section 5. Finally, the conclusions are presented in Section 6.

2. Dataset Descriptions

We utilized four public ECG datasets, which were the MIT-BIH Arrhythmia dataset (called MIT-BIH dataset in this research), the QT dataset, the MIT-BIH ST Change dataset (called ST CHANGE dataset in this research), and the INCART dataset, all accessed from PhysioNet [17,18,19,20]. The MIT-BIH dataset contains 48 records of 30-minute-long ECG recordings. The signals were sampled at 360 Hz, with two channels given for each record. The QT dataset contains 105 records of 15-minute-long ECG recordings sampled at 250 Hz, with 2 channels given for each record. However, 23 records with names between sel30 and sel52 were not annotated and were excluded. Thus, 82 records were used in this study. Meanwhile, the ST CHANGE dataset contains 28 records sampled at 360 Hz with 2 lead channels unlabeled. However, channel 319 contains an unlabeled segment, likely due to the high level of noise present, and was thus removed. Finally, the INCART dataset contains 75 records of 30-minute-long recordings sampled at 257 Hz, with 12 given lead channels. Specifically, in all datasets, we use the Lead ML-II channel if it is available. If not, then the first channel given is used.

3. The Proposed Method

On the surface level, locating R-peaks may seem like a simple task, as the R-peak is the most clearly visible wave. However, in reality, many wave morphologies make this task increasingly difficult. Figure 2 shows a sample signal of a relatively clean ECG, while Figure 3, Figure 4 and Figure 5 show examples of problematic ones.
Figure 2 illustrates the traditional ECG shape, where the QRS complex is evidently the most visible peak, preceded by a P-wave and succeeded by a T-wave, both of which are less noticeable when compared to the R-peak. Many records contain similar wave morphologies to the one shown in this figure, which allows the R-peak to be easily detected with any method. Meanwhile, Figure 3 displays an example of abnormally large T-waves that have larger amplitudes than R-peaks. Also, the record contains arrhythmic beats, which have varying morphologies when compared to normal sinus waves. Because the T-wave often shadows the R-peaks, simply finding the highest peak or using techniques that rely on finding the maximum value would not suffice. Examples of severe baseline wander are shown in Figure 4. Noticeably, the baseline shift is many times greater than the amplitude of the QRS complexes present. As a result, methods that rely on sliding windows and recalculation of the baseline in order to locate R-peaks would struggle. Figure 5 displays examples of upside-down QRS complexes as well as arrhythmic beats. As a result, the ECG wave morphology is significantly different from traditional ones that are normally displayed. Records similar to this make the R-peak increasingly difficult to locate, as various methods that rely on learning the shape of R-peaks would struggle against new data that has not been learned by the model. However, the chronological order of the components of an ECG wave always stays consistent. Thus, we utilized weighted directed graphs to help define and segment an ECG wave.
In this work, a graph structure is constructed based on prior knowledge about the ECG structure, and dynamic programming is used to segment the signal into different predefined states according to the graph. Three logical flags based on slope, difference, and shape of the signal are also introduced to better fit waveforms to ECG wave morphology. The adaptive thresholding for the slope of the signal in an R-peak is implemented to cope with the variation of ECG signal levels in different individuals. The details are given below.

3.1. ECGMorphGraph: The Proposed Graph for ECG Wave Morphology

Considering a discrete-time ECG signal of length N , x n , 0 n N 1 , the goal is to label the signal at each time index into different types/parts. Mainly, we aim to label the R-peaks. However, to increase the accuracy of the model, several other components of the ECG wave are incorporated. To capture the relation between each state and correctly label the signal at each time index, we incorporated graph theory.
In graph theory, a graph is defined as a set of vertices V , and a set of edges E = { ( u 1 , v 1 ) ,   ( u 2 , v 2 ) ,   } where u i , v i V . A directed graph is a graph containing edges that have a direction, meaning that an edge ( u i , v i ) does not imply the existence of a reverse edge ( v i , u i ) . A weighted graph is a graph containing edges with each edge assigned a numerical value, or a weight. Mathematically, a weighted directed graph is a set of vertices V = { v 1 , v 2 , v 3 ,   , v P } and a set of edges E = { ( u 1 , v 1 , w 1 ) , ( u 2 , v 2 , w 2 ) ,   , ( u Q , v Q , w Q ) } , w i R .
In our proposed method, the vertices of the graph are categorized into several types based on each component of the ECG. The proposed graph named “ECGMorphGraph” is created corresponding to the real ECG wave morphology. In the graph, a directed edge between vertices u and v exists if vertex (or state) v might come directly after the vertex (or state) u chronologically in an ECG signal. Specifically, each vertex is a representation of a corresponding state or segment within an ECG signal.
For each vertex
The following information is stored:
  • The state it corresponds to, labeled numerically, as well as stored as a string. The states used in our work are as follows: “Start”, “R”, “S”, “PQ”, “Q”, “ST”, “T”, “UNK”, in which each string represents an ECG wave component and “UNK” represents an unknown component. Note that there may be several numerical vertex types corresponding to the same ECG states, as an ECG state can have varying morphologies.
  • A slope constraint to ensure that the shape of the segment suits the state it is at, i.e., R-peaks would have to be significantly slanted, and isoelectric lines would have to be relatively flat. Since there are many instances where ECG waves are mirrored in the horizontal axis, we define a logical flag based on the signal slope (gradient) constraint in the j t h vertex, F g , j , for both up-sided and down-sided waves as
    F g , j = T R U E   for the following cases:
    Case 1: ( α j = 0 )
    Case 2: α j = 1 g m a x δ g , j
    Case 3: ( α j = 1 ) ( g m i n δ g , j )
    Case 4: ( α j = 2 ) ( g m i n δ g , j ) ( g m a x δ g , j )
    Case 5: ( α j = 3 ) ( g m a x δ g , j g m i n δ g , j )
    Else   F g , j = F A L S E
    where the minimum and maximum slopes g m i n and g m a x are defined, respectively, as
    g m i n = x v j 1 + 1 + x v j 2 x m i n v j v j 1
    g m a x = 2 x m a x x v j 1 + 1 x ( v j ) v j v j 1
    x m i n and x m a x are the minimum and maximum values of the ECG signal, respectively, in the segment of interest from v j 1 + 1 to v j , and δ g , j is the slope thresholding value of the j t h vertex. Note that v j corresponds to the time index of the j t h vertex in our selected labeling, or optimal path. In other words, g m i n and g m a x are the slopes using the lowest and highest points, respectively, or the difference in amplitude between the highest/lowest points and the starting point, added with the highest/lowest points and the ending point, over the length. The idea behind the use of α j for each type of slope-based constraint is as follows:
    α j = 0 : no slope constraint
    α j = 1 : normal wave segment
    α j = 1 : upside-down wave-like segment
    α j = 2 : flat segments
    α j = 3 : any wave-like segments, i.e., up or down.
In short, the function is defined for five unique cases. For the no slope constraint case, it always returns true. For the normal wave segment case, it returns true if the maximum slope is not less than the defined slope constant. For the upside-down wave-like segments, it returns true when the minimum slope is not less than the defined constant. For the flat segments, it returns true when both the minimum and maximum slopes are not greater than the defined constant. Lastly, in wave-like segments that can be both normal and upside-down, it returns true when either the minimum or maximum slope is not less than the defined constant. Otherwise, the function will return false.
3.
A vector of edges that point to the current vertex.
4.
A range [ l j , r j ] which represents having edges from the vertices of type j within the range n r j 1 to n l j 1 .
It is very important to note that the slope thresholding value of the j t h vertex, δ g , j , was made adaptive for all pairs of consecutive R-peaks to cope with the vast variation of the broadness of R-peaks in different records as ECG wave morphology can vary depending on the person. Specifically, the broadness of the R-peaks and T-peaks differs greatly from one record to another, so much so that T-peaks from some records are wider or bigger than R-peaks. To combat this, the updated current thresholding value is basically calculated by averaging half the current slope value and the previous thresholding value. To make it robust to varied signal acquisition, the thresholding value is bounded based on the sampling rate F s . In the experiments, the minimum thresholding value T m i n was set to 9 / F s . The threshold has to be at least T m i n and cannot go beyond 2 T m i n . This prevents too much change in the consecutive thresholds. This update occurs only at the vertices corresponding to the state of R-peak, i.e., the vertices 1 and 6 in Table 1. It is worth noting that the adaptive thresholding is calculated between iterations and is updated automatically once a state representing an R-peak is reached, making it adaptive for each R-peak we reach. This means that it operates independently from the other defined graph constraints. Specifically, the new adaptive slope thresholding value is updated according to the following algorithm:
δ g   δ g + c u r r e n t   s l o p e 2 / 2
δ g m i n ( δ g , 2 T m i n )
δ g m a x ( δ g , T m i n )
For each edge
The i t h edge ( v i 1 ,   v i ) stores the following information:
  • v i 1 and v i representing a one-directional connection from vertex v i 1 to v i .
  • An integer denoting the index of the edge.
  • The minimum difference constraint to ensure a significant change of amplitude is met. The difference-based constraint logical flag in the i t h edge, F d , i , is defined as
    F d , i = T R U E   for the following cases:
    Case 1: ( β i = 0 )
    Case 2: β i = 1 d i δ d , i
    Case 3: ( β i = 1 ) ( d i δ d , i )
    Case 4: ( β i = 2 ) ( d i δ d , i )
    Else   F d , i = F A L S E
    where d i = x ( v i ) x ( v i 1 ) for a signal within the range v i 1 + 1 to v i . To make it clearer, d i is the difference between the last value of two consecutive segments, and δ d , i is the difference thresholding value of the i t h edge. Each type of difference-based constraint is used as follows:
    β i = 0 : same as the previous segment
    β i = 1 : normal wave-like segments
    β i = 1 : upside-down wave-like segments
    β i = 2 : flat segments
To sum it up, the function is defined for four types of segments. In the case of no difference constraint, or for segments that are identical to their previous segments, the function always returns true. For the normal wave-like segments, the function returns true when the difference is not less than the defined constant. For upside-down wave-like segments, the function returns true when the negative difference is not less than the defined constant. Lastly, for flat segments, the function returns true when the magnitude of the difference is not greater than the defined constant. Otherwise, the function returns false.
4.
A fixed bias b i for the i t h edge which represents the cost of traversing the edge. This bias prevents changing states too frequently or sub-optimally.
The shape-based constraint logical flag of the j t h vertex, γ j , is also defined for some of the vertex types. Note that the j t h vertex labeling a range v j 1 + 1 to v j would have to satisfy their type constraint to be considered as a possible path. The constraint is given below.
γ j = T R U E for the following cases:
Case 1: ( j = 1 j = 12 ) x m a x > x v j 1 + 1 x m a x > x ( v j )
Case 2: ( j = 6 j = 14 ) x m i n < x v j 1 + 1 x m i n < x ( v j )
Case 3: ( j = 2 j = 5 ) x m a x = x ( v j )
Case 4: ( j = 7 j = 10 ) x m i n = x ( v j )
Case 5: j = 3 j = 4 j = 8 j = 9 j = 11 j = 13 j = 15
Else   γ j = F A L S E
Note that all three functions, representing the three constraints, aid the labeling process (traversal through vertices), or the fourth step in Figure 1. Specifically, if all three functions return true, then the labeling process is allowed to commence. Otherwise, the specific path cannot be taken because it does not satisfy a specific morphology. Figure 6 displays the structure of the ECGMorphGraph that we created, particularly for ECG signals. The graph consists of 15 vertices and 22 edges based on ECG signal morphology and structure. In addition, we also added another vertex as a failsafe path to ensure that the labeling still occurs when there are no fitting paths, which is not displayed in the figure. The states of each vertex in the graph and the special vertex (failsafe vertex) will be explained further in Section 5.
To label the ECG signal as a time series with length N , we will copy the ECGMorphGraph for each time index, creating N layers of the graph, with each layer corresponding to a time index as shown in Figure 7. Specifically, each time index will contain all types of vertices with inward edges from previous time indices. As a result, the layered ECGMorphGraph would contain N P vertices, where P is the total number of ECG parts defined (or basically the number of vertices in the ECGMorphGraph). Each type of vertex will also contain a range [ l j , r j ] representing the possible lengths of the state in the current vertex. This corresponds to the time indices of the possible previous vertices. That means all vertices with type i will contain inward edges from time indices n r i 1 to n l i 1 with vertices of type j for all ( j , i ) E , where j is the type of the previous vertex and i is the type of the current vertex. As could be imagined, the actual number of edges pointing to each vertex is extremely large due to many possible edges from many layers corresponding to the past time instances in the range [ l j , r j ] . The actual layered ECGMorphGraph would contain an extremely large number of edges, and hence, the layered graph would be unreadable. This is why the simplified version of the layered ECGMorphGraph is shown in Figure 7, rather than the actual one.
To label each signal segment, visiting a vertex of type i at time index n represents labeling an ECG segment ending at the time index n as type i . Therefore, a sequence of vertices, or a path, containing the vertices { v 0 , v 1 , v 2 ,   ,   v k } would represent labeling the signal as follows: [ 0 , v 1 ] as the type of vertex 1, [ v 1 + 1 , v 2 ] as the type of vertex 2, [ v 2 + 1 , v 3 ] as the type of vertex 3, …, [ v k 1 + 1 , v k ] as the type of vertex k , where v i denotes the time index of the i t h vertex. Note that v 0 = 0 and v k = N , as our goal is to label the entire sequence. For each directed edge, we will then assign a weight, w i , representing the cost of labeling the specific segment and the corresponding bias. Mathematically, the i t h edge is assigned a weight of w i = ε ( l i , r i ) + b i , where
ε ( l i , r i ) = m = l i r i x ( l i ) x ( m ) 2 ,
[ l i , r i ] is the segment corresponding to the i t h edge, j is the type of the vertex the edge is pointed to, and b i is the bias of an edge connecting the previous vertex type to the current vertex type. In simpler terms, the cost function is defined as the sum of the squares of the differences between every point and the starting point. The basic idea is that ε ( l i , r i ) is the cost function to help encourage labeling, as labeling a segment might decrease the overall cost, and the bias b i is an additional cost to discourage some types of labeling unless it is clearly optimal. As mentioned earlier, we introduce 2 logical flags based on signal level constraints to prevent incorrect transitions, i.e., a slope-based flag F g , j which is assigned to vertices, and a difference-based flag F d , i which is assigned to edges. We also introduce another logical flag based on the shape constraint γ i to make sure that a labeled segment contains the data points we need. Specifically, the constraint makes sure that some labeled segments will contain a local maximum at endpoints of the segment or at the middle to ensure correct R-peak detection. Formally, we can write the labeling problem as
minimize u 0 , u 1 ,   ,   u k i = 1 k ( ε ( v i 1 + 1 , v i ) + b j )
subject   to   t i 1 , t i E , l i v i v i 1 r i , F g , i   is   TRUE ,     F d , i   is   TRUE ,   and   γ i   is   TRUE .
where t i denotes the index of the type of the i th vertex, and j denotes the index of the current edge ( t i 1 , t i ) for the i t h vertex, and v i denotes the time index of the i t h vertex in the labeled path. To put it simply, our task is to find a path of vertices u 0 , u 1 ,   ,   u k , such that the sum of the edge weights between consecutive vertices is minimized. Visually, this path is displayed in the third and fourth steps of Figure 1, where it will be used to segment the ECG signal and find the R-peak positions.
We can observe that this problem can be changed into a simple shortest path problem by representing the problem using graphs. More formally, we must find a sequence of vertices u 0 , u 1 , u 2 ,   ,   u k where u 0 represents the start vertex at time index 0, and u k represents a vertex ending at the last time index with minimum cost. This can be solved with Dijkstra’s shortest path algorithm in O ( ( P + Q )   l o g ( P ) ) where P and Q are the numbers of vertices and edges, respectively, as defined earlier. However, we can observe that the structure of our specific graph turns it into a directed acyclic graph (DAG), as edges point from vertices of smaller time indices to larger time indices. This means the shortest path can be found by iterating the topological ordering of the graph in O ( P + Q ) time and storing the optimal answer with dynamic programming. The shortest path will then be considered as the most optimal labeling.
Table 1 and Table 2 show the details of vertices and edges, respectively, used of the proposed ECGMorphGraph. In total, we have 16 vertices and 30 edges in the graph. Note that each edge corresponds to r i l i + 1 actual edges connecting a vertex of one type, with a time index n , to a vertex of another type with time indices [ n r i 1 , n l i 1 ] for each time index of the layered ECGMorphGraph. Each vertex numbered from 0 to 14 represents a specific state of the ECG wave. Additionally, we introduce a special vertex, indexed 15 and labeled as “UNK”, representing the word unknown. This vertex is used as a failsafe to ensure that there is always a path for graph traversal, even if none of the other vertices are currently reachable. Therefore, vertex 15 is connected to all vertices and assigned a cost equivalent to infinity to prevent taking this path unless necessary. This can be easily implemented in this research by setting the bias b i to 1010.
The values in the tables were determined according to the ECG wave morphologies, varied individual conditions, and varied signal acquisition setups. It is worthwhile noting that, in Table 1, the lower and upper bounds of the interval of interest l i and r i are set with respect to the sampling rate F s of the ECG signal. To be more specific, the values shown in the table were divided by F s . This is to make our algorithm robust to different ECG signals acquired by different sampling rates. Meanwhile, other parameters, i.e., the slope thresholding value of the j t h vertex δ g , j and the difference thresholding value of the i t h edge δ d , j were also affected by the sampling rate selection. The values of δ g , j and δ d , j in the tables were multiplied by F s to make our algorithm robust to sampling rate variation.
For reproducibility purposes, it is important to note that the construction of the ECGMorphGraph was done manually through trial and error. Specifically, important parts of the ECG were added first, such as the parts representing the R-peaks and the “Start” vertex. The corresponding thresholds and constraints were also added to ensure correct detection. Then, more minor parts were incorporated into the graph one by one, such as the T-wave, ST segment, and the Q and S segments in the QRS complex. After the rough graph was built, minor changes were made to the structure to increase performance. It is also important to explain that each part of the proposed graph structure was added to combat specific ECG morphologies. For example, vertices 6 through 10 were added to enable detection of upside-down waves, and vertices 12 and 14 were added to allow correct detection of prominent T-waves instead of mislabeling them as R-peaks.
Furthermore, it is important to note that the selection of threshold and constraint values was done systematically and logically. In particular, real-world ECG data, usually from the MIT-BIH dataset, was manually analyzed to create appropriate threshold values by first using an estimate of the logical values each constant should take. Then, each value was roughly optimized to increase performance and detection accuracy. As such, most of the threshold and constraint constants are based on the 360 Hz sampling rate of the MIT-BIH dataset, and were then converted to the values presented in Table 1 and Table 2. Lastly, the determination of all values was done simultaneously with the addition of each vertex in the graph to ensure that the current structure works effectively.
To evaluate the detection performance of our algorithm, we used five evaluation metrics: accuracy, sensitivity, positive-predictive value (PPV), F1-score, and detection error rate (DER) [21,22]. The definitions of each metric are stated as follows:
A c c u r a c y = T P / ( T P + F N + F P ) ,
S e n s i t i v i t y = T P / ( T P + F N ) ,
P P V = T P / ( T P + F P ) ,
F 1 = 2 T P / ( 2 T P + F P + F N ) ,
D E R = ( F P + F N ) / ( T P + F P + F N ) ,
where T P is the number of true positives, F N is the number of false negatives, and F P is the number of false positives.
Table 3, Table 4, Table 5, Table 6 and Table 7 display the performance of our algorithm for the MIT-BIH dataset with moderate variations to the major constants that are used, while Table 8 displays the performance when some vertices are removed from the manually defined graph. To be more specific, the removal is done by directing each of the incoming edges from the removed vertex to all of its possible successors. This ensures that there is still a valid path through the graph in the absence of the specific vertex type, and accurately measures the performance of the graph without the usage of the mentioned vertex. It should be noted that the results presented in the abstract as well as Section 4 (Experimental Results) correspond to the optimal parameters across all databases, meaning that some variations may create a better performance in the MIT-BIH database as presented in Table 3, Table 4, Table 5, Table 6 and Table 7. Namely, five of the most significant values were chosen to be tested, including: the R-peak difference threshold ( δ d , 1 ) , the S slope threshold ( δ g , 2 ), Q slope threshold ( δ g , 4 ), PQ slope threshold ( δ g , 5 ), and the adaptive threshold coefficient. The adaptive threshold coefficient indicates the weight applied to the current slope threshold compared to the previous value. So, the simple average implies that this coefficient is 0.5. Five variations of each constant were chosen, and the results are reported to show the parameter robustness of our proposed method. These variations were chosen to be round numbers surrounding the actual value used, for simplicity and to demonstrate the change in performance when the values are increased/decreased to a certain level. Furthermore, during the variations, the other values are kept as reported in Table 1 and Table 2.
The first observation of the evaluation is that the variation of these five parameters did not significantly affect the overall detection performance achieved by our proposed algorithm on this dataset. The accuracy, sensitivity, PPV, and F1-score were all higher than 99%, and the values of DER were all less than 1% in all scenarios. The parameter that showed the most variation in detection performance was the R-peak difference threshold, where the accuracy ranged from 99.07 to 99.20, the sensitivity ranged from 99.39% to 99.60%, the PPV ranged from 99.47% to 99.69%, the F1-score ranged from 99.50% to 99.60%, and the DER ranged from 0.80% to 0.93% as shown in Table 3. Meanwhile, the detection performance changed just a little over the variations of the S slope threshold, Q slope threshold, PQ slope threshold, and the adaptive threshold coefficient as shown in Table 4, Table 5, Table 6 and Table 7. This shows that our proposed algorithm does not rely upon specific values of parameters, but is a robust framework capable of detecting R-peaks. Note that the values chosen had a relatively large difference. For example, the 0.10 to 0.50 chosen for the R-peak difference threshold corresponds to a minimum requirement of 0.10 to 0.50 millivolt difference in amplitude for an R-peak to be considered for labeling, which is quite significant. In Table 8, we see that each vertex plays an important role in R-peak detection. The removal of the vertices corresponding to the PQ, S, and T components, along with their upside-down counterparts, resulted in slight decreases in performance ranging from approximately 0.1 to 0.5% in accuracy. This demonstrates that these vertices slightly contribute to the overall performance. On the other hand, the removal of the vertices corresponding to the Q segment significantly decreases the accuracy to around 94.35%, showing that it is a very crucial part of the proposed graph structure. Overall, the controlled ablation experiments showed that the graph still works effectively to a considerable degree when some of its vertices are removed, but all the vertices are still needed to achieve a competitive performance, justifying the need for the complexity of the 16-vertex graph. Note that the value chosen for this specific work might not correspond to the optimal value in the table, as it only displays the results from the MIT-BIH dataset and not all four datasets. Also, we would like to state that the parameter optimization has not been done extensively to prevent overfitting, and to show a realistic performance of our algorithm and proposed framework, meaning that additional parameter optimization will increase the performance of our method to a considerable degree.

3.2. ECG Segmentation Using Dynamic Programming

As mentioned earlier, we can formulate the segmentation by finding the minimum or shortest path in our layered ECGMorphGraph. This can be solved with dynamic programming by iterating through the topological ordering of the graph. Specifically, D n , i represents the minimal cost of labeling at the vertex representing the index n with state i . The recurrence is as follows:
D n , i = min D n m 1 , j + ε n m ,   i + b i ,   l i m r i ,   ( j , i , w i ) E ,
where the cost ε l , r is defined as in (7). In the real implementation, however, the computation time can be saved by considering
ε l , r = m = l r x ( l ) x ( m ) 2 = m = l r x ( l ) 2 + m = l r x ( m ) 2 + m = l r 2 x ( l ) x ( m ) = r l + 1 x ( l ) 2 + m = l r ( x ( m ) ) 2 + 2 x ( l ) m = l r x ( m )
Which can be computed with prefix sums in O ( 1 ) time and O ( N ) precomputation time by maintaining a prefix sum of the signal and a prefix sum of the signal squared. Therefore, all thresholds can be computed in O ( 1 ) time. Note that by iterating from smaller time indices to larger time indices, we are iterating over the topological sorting order of the graph, and are updating each vertex with the vertices from which its inward edges are pointed.

3.3. Computational Complexity

Figure 8 displays the pseudocode of the proposed algorithm. Each iteration of the algorithm can be separated into two main parts. ECG segmentation and peak localization from the segmented signal. The segmentation works by iterating over the signal, then iterating over all graph vertices and their indegrees. For each inward edge in the ECGMorphGraph, we iterate the signal from i r 1 to i l 1 to update the dynamic programming array. It should be noted that updating the dynamic programming array can be done in O ( 1 ) by precomputing prefix sums and maintaining the local minimum and maximum when iterating. Thus, our algorithm works in O ( N + K ) where N is the signal length and K is the total number of edges of the layered ECGMorphGraph. Specifically, K = N Q , where Q is the total number of edges for all the vertices representing a single time index. Since the graph structure is predefined and static, Q and K are constant. Therefore, the segmentation part of the algorithm works in O ( N ) or more accurately O ( N Q ) , which constitutes a relatively high constant factor.
The peak localization part of the algorithm works first by backtracking through the optimal segmentation obtained by the segmentation part. Specifically, we first iterate over all types of vertices and find the minimum cost of D N 1 , i where N is the signal length. Next, the backtracking is performed through the optimal sequence. During the segmentation part, the most optimal type and index to backtrack to are stored. This allows us to iterate through the most optimal signal from back to front. Specifically, for each state of the graph we store the previous state (the type and index) that results in the minimum cost, which allows us to track the previous state we need to backtrack to. Also, the backtracking process starts from state D N 1 , i with minimal cost across all states ending at N 1 . In each iteration, the current state is set to the previous state that yielded the minimum cost, which has already been stored during the peak labeling process. Specifically, the state is updated as ( j , i ) j , i , where j , i is the optimal previous state corresponding to D j , i . When a peak segment is arrived, we will then find the local maximum or minimum and assign it as the peak of the segment. For example, for an R-peak segment [ l , r ] , we will iterate x ( l ) to x ( r ) and assign the highest/lowest value as the peak, depending on whether the type of the segment is a normal R-peak or an upside-down R-peak.
To remedy the effect of the high constant factor on computation time, particularly when N is extremely large, we can observe that many non-optimal points were iterated over. For some specific segments, a precise time index is not needed for the segmentation. Thus, instead of iterating over all elements in a range [ l , r ] , we can iterate only some elements by skipping over others with a certain number, such as 2, 3, and so on. In this research, the signal lengths are still within our tolerance. Hence, all time indices are considered.
Practicality-wise, our method used an average of 122.42 s per record in the MIT-BIH dataset, 29.08 s per record in the QT dataset, 112.82 s per record in the STCHANGE dataset, and 63.59 s per record in the INCART dataset. The hardware specification used was an AMD Ryzen 7 5800H with Radeon Graphics (3.2 GHz) processor with 16 GB RAM, on a 64-bit operating system, x64-based processor, on a local standalone computer. This shows that our algorithm could be implemented in smaller or portable hardware devices that could be used in the medical field. Note that the practical time used could be further reduced using the aforementioned technique of not considering every sample in a range [ l , r ] during the labeling process in specific segments such as the “Start” segment, which does not require precise labeling.
Also, we would like to emphasize that our method, which runs in linear time, is theoretically more computationally efficient than conventional deep learning techniques that are employed in R-peak detections. Although not explicitly stated in their papers, deep learning architectures, such as convolutional operations or convolutional neural networks, can be very costly in computational power, typically running with a much higher complexity than linear time. This is usually due to the highly complex and multi-layered structure of deep learning architectures, which require several iterations of the input data. As a result, our proposed method offers an asymptotically computationally efficient alternative to deep learning-based methods and can be further reduced in real-life settings based on the pruning method mentioned above. It should also be noted that although the execution time of approximately 122 s for the MIT-BIH database on a mid-range standalone laptop computer may seem less efficient than some recent lightweight neural networks, it may be difficult to directly compare practical runtime on different devices or platforms, since hardware and software architectures vary greatly, ranging from low-end local standalone edge devices to high-end cloud computing servers.

4. Experimental Results

Table 9 demonstrates the overall R-peak detection of our proposed algorithm using the aforementioned metrics. Furthermore, throughout the experiments, a tolerance of 150 milliseconds was applied because the annotations provided were sometimes inaccurate from the real position of the R-peak as shown in Figure 9, Figure 10, Figure 11 and Figure 12. A 150-millisecond window is benchmarked by the Association for the Advancement of Medical Instrumentation (AAMI) to ensure adequate coverage of the entire R wave [23]. The AAMI defines this standard to enable consistent comparison among different R-peak detection methods. Our algorithm achieved great results, reaching over 99% in three datasets of the MIT-BIH, QT, and ST CHANGE, while achieving over 98% in the INCART dataset. Table 10 demonstrates the 95% confidence interval (95% CI) and 99% confidence interval (99% CI) of each metric of the proposed algorithm. Overall, the confidence intervals show that our algorithm is quite robust. However, there are some specific outlier cases that significantly increase the variation of the performances, especially in the INCART dataset which contains several tricky records with severe noise or irregular wave morphologies, which will be discussed later on.
In more detail, the MIT-BIH, QT, and ST CHANGE datasets, our algorithm performed very well. Notably, our algorithm reaches over 99.5% accuracy in the majority of records, with only some records having low performance due to irregular wave morphologies as will be explained in more detail next.
Figure 9 displays an example of the labeling result of the proposed algorithm. Each color corresponds to each labeled part of an ECG. In the figure, our algorithm correctly identifies the positions of the R-peaks and labels each part relatively accurately. It should be noted that some of the segments that are labeled might not be centered due to the defined cost function. Also, it should be noted that other ECG parts might not always be correctly identified due to lenient definitions. However, in a way, this helps combat ECG waves with unique morphology.
Figure 10 shows an example of false positives in record 207 from samples 562,000 to 564,000. Record 207 contains several long instances of ventricular flutter waves, which are sinusoidal-like waveforms that do not contain actual QRS complexes or wave morphology such as P-waves or T-peaks. However, ventricular flutter waves are extremely similar to a QRS complex and exist continuously for a fairly large period of time. As a result, the PPV dropped significantly, resulting in an accuracy of 84.74%. Notably, over 50% of the FPs arose from this record alone. If the ventricular flutter waves were to be excluded, our algorithm would actually perform very well, as in some other methods previously reported.
On the other hand, Figure 11 illustrates an example of false negatives in record 108 between samples 619,500 and 620,500. A significant baseline shift is seen with very small QRS complexes and R-peaks. Specifically, a baseline shift of over 2.5 millivolts is displayed with QRS complex amplitude less than 0.5 millivolts. QRS complexes in the figure are also shown to be quite broad, resulting in the algorithm not being able to detect them as R-peaks.
In the INCART dataset, our algorithm achieved an accuracy of 98.05%. This was mainly due to the extreme noise and signal interference that were present. Notably, our algorithm underperformed in records I01, I03, I04, and I54, reaching accuracies of 88.05%, 91.82%, 72.34%, and 87.04%, respectively.
Figure 12 displays the extreme baseline wander in record I01 of the INCART dataset. Specifically, we can see that the baseline wanders up to 10 millivolts, which is around 5 times larger than the amplitude of the R-peaks present in this record. Furthermore, it can be seen that the signal is also extremely unstable, showcasing extremely large, sudden fluctuations that significantly distort the ECG signal. Specifically, these sudden baseline wander spikes and drops can completely mask any visible R-peaks, causing FNs. Moreover, the significant amplitude of these fluctuations also closely resembles the shapes of R-peaks, which can result in FPs. As a result, our algorithm achieved a sensitivity and PPV of 96.48% and 90.97%, respectively.

5. Discussion

The experimental results demonstrate that our proposed algorithm yielded very good results in detecting R-peaks. We achieved an accuracy of 99.07%, sensitivity of 99.59%, PPV of 99.47%, F1-score of 99.53%, and DER of 0.93% in the MIT-BIH dataset, an accuracy of 99.46%, sensitivity of 99.51%, PPV of 99.94%, F1-score of 99.73%, and DER of 0.54% in the QT dataset, an accuracy of 98.05%, sensitivity of 98.78%, PPV of 99.25%, F1-score of 99.01%, and DER of 1.95% in the INCART dataset, and an accuracy of 99.23%, sensitivity of 99.56%, PPV of 99.67%, F1-score of 99.61%, and DER of 0.77% in the ST CHANGE dataset. However, there are some weaknesses that our algorithm struggles with. Notably, our algorithm struggled to differentiate between high T-waves and noise or cardiac activity with wave-like morphology and R-peaks. This can be evidently seen in Figure 10 which displays a segment from record 207 of the MIT-BIH dataset containing flutter waves that are shaped like peaks, but are not classified as R-peaks. Additionally, varying heartbeat morphology also caused some mislabeling due to some R-peaks and T-waves being similar in amplitude and slope such as the ones displayed in Figure 11. This makes it increasingly difficult to detect said R-peaks with the thresholds and constraints proposed. Lastly, with many arrhythmias containing broad R-peaks, the algorithm also sometimes struggled to label some of them as R-peaks.
Table 11, Table 12, Table 13, Table 14, Table 15 and Table 16 show the accuracy, specificity, PPV, F1-score, DER, and the methods used for state-of-the-art research works that are evaluated against several datasets. Overall, our algorithm achieved good performances in the MIT-BIH dataset, the QT dataset, and ST CHANGE dataset; however, it slightly underperformed in the INCART dataset. Overall, our algorithm outperformed or had very competitive results with some state-of-the-art algorithms such as [9,24], which utilize simple and interpretable methods such as average filters, amplitude thresholds, and parabolic fitting, and also more black box algorithms such as [22,25], which employ machine/deep learning techniques such as neural networks. However, our proposed method still achieves inferior results to the highest performing works, such as [26], which proposes a deep learning architecture using a stationary wavelet transform and a convolution neural network, as well as [21,27,28], which employ techniques such as hierarchical clustering, adaptive thresholding, and a digital fractional order differentiator. However, we would like to state some issues that many works have which cause inflated results that might not be directly comparable to ours.
(1)
Many papers relied on the usage of machine learning or deep learning, which is often based on supervised learning. Supervised learning is mainly data-driven, oftentimes relying on the model to learn complex patterns that are overfitted to specific data. As a result, these methods can sometimes be unable to generalize their performance across other unseen data. Furthermore, supervised learning is highly optimized to the data that it is trained on. Specifically, many works, such as those proposed in [22,26], rely on machine/deep learning techniques. Moreover, other methods, such as the one proposed in Ref. [30], also use exhaustive brute forcing to optimize their parameters for specific data. While this does improve their general performance, it may cause the model to overperform in the given datasets due to the data-driven approach and underperform in unseen real-world data. On the other hand, our algorithm and graph structure were defined based on the real ECG wave morphology, leading to possibly less optimized performance across the seen data.
(2)
Some works excluded records that contain harder-to-differentiate QRS complexes. For example, in Refs. [26,28], the record 207 in the MIT-BIH, which contained ventricular flutter rhythms, was excluded. This record often results in low performance in various proposed methods, as it is hard to differentiate between flutter waves and normal sinus waves. Thus, the results demonstrated by these papers might be artificially inflated compared to their real capabilities.
(3)
Each proposed method contains different training and testing methods. Many times, researchers would exclude a subset of the data for training and then validate their results on the rest of the data. This means that the training data is completely excluded from the results, which may lead to a biased partitioning of a dataset, as the randomly selected training data might contain the harder cases, leading to inflated performances. Similarly, k-fold cross-validation also exhibits the same possibility for biased partitioning. Specifically, the work in Ref. [22] randomly selected the training data, excluding 11% of the INCART dataset as well as some parts from other datasets. In [30], the whole MIT-BIH dataset was used for training and testing. The work in Ref. [26] included results from both cross-validation and cross-dataset validation. Therefore, the results given in each paper might not be directly comparable.
(4)
Some works that perform well only test their models in the MIT-BIH dataset and the QT dataset. Notably, these two datasets are the most common datasets to use in R-peak detection. However, they also contain relatively clean ECG signals when compared to the INCART or ST CHANGE dataset. Specifically, the methods proposed in [21,29] and Ref. [27] were only validated in the two aforementioned datasets. Thus, the results of these works may not reflect their true performance in general real-world data, where noise is more prevalent.
(5)
Some papers, such as [9,26], used different methods to evaluate different datasets. Specifically, different sets of parameter values were separately used for the MIT-BIH and the QT datasets in Ref. [9]. As a result, they achieved relatively high results in both datasets. On the other hand, in Ref. [26], different window sizes were applied in their moving average for different datasets. Specifically, they had a 75-millisecond window in the test set and 150 milliseconds in the internal validation set, as mentioned in the paper. Thus, the results that they reported might not reflect the true capability of their models or algorithms, as the models were optimized for each dataset.
Even though our performance may be inferior to some previously proposed works, it provides significant value in the graph-based segmentation framework used. Specifically, the graph-based approach allowed the definition of other parts of an ECG to aid in R-peak detection, instead of using non-interpretable mathematical features that are utilized in machine learning/deep learning models. This enables concurrent labeling of the R-peak and other waveforms such as the P-wave, Q and R wave components of the QRS complex, T-wave, and other parts such as the ST segment, as demonstrated in Figure 9. On the contrary, other methods that only focus on the separation of the R-peak because it is the most prominent waveform cannot complete this task without additional detection frameworks. In addition, the proposed global graph segmentation framework is not only applicable to R-peak detection in ECGs, but can also be applied in other signal processing challenges that may arise in the medical field. Since one can model complex chronological structures into a graph, it would have advantages over simple thresholding or fitting methods, which cannot take into account the chronological information. Therefore, this method shows significant potential beyond interpretability and computational efficiency, as the same framework may not only be applied to other signal processing tasks, but may also be further developed to support more advanced diagnostic applications, such as the detection of other waveforms and possible arrhythmias. At the same time, the proposed framework allows us to maintain a relatively low computational complexity when compared to methods such as deep learning architectures, enabling the possibility of usage in real-life settings.

6. Conclusions

The proposed algorithm yielded good results in detecting R-peaks. We achieved above 99% in accuracy, sensitivity, PPV, and F1-score for the MIT-BIH dataset, the QT dataset, and the ST CHANGE dataset. The proposed algorithm also yielded an accuracy of 98.05%, sensitivity of 98.78%, PPV of 99.25%, and F1-score of 99.01% in the difficult and complicated INCART dataset. Meanwhile, the DERs of less than 1% were achieved for the MIT-BIH dataset, the QT dataset, and the ST CHANGE dataset. The DER of 1.95% was achieved for the difficult INCART dataset. The comparison to state-of-the-art works also demonstrated the remarkable R-peak detection performance of the proposed method. We also considered all data in the datasets of interest, without complicated data exclusion like in some previous works. More importantly, it is worthwhile noting that our method was designed and developed based on the real ECG wave morphology. Unlike many other previously proposed black box-based models, it possesses a workflow that is traceable and understandable to human beings and, hence, provides better model generalization. The low complication of the proposed method results in a relatively low computational complexity when compared to general deep learning-based methods. However, the computational complexity of deep learning approaches may not be as significant as that in the past since some lightweight and end-to-end deep learning models have recently been developed [31]. These models enable deep learning-based approaches to be implemented on edge devices with low computational complexity. Hence, such developments open up potential research opportunities for real-time deep learning-based R-peak detection on standalone edge devices.
It is also important to emphasize that our algorithm has many strengths, offers many new potential research opportunities, and can still be further developed. For instance, our current algorithm achieves competitive results without the use of preprocessing. Specifically, the structure of the graph with vertices of types 11, 12, 13, and 14 provides room for moderate noise and artifacts to be implicitly suppressed during traversal of the graph. This is because the intentionally loose definitions allow noise and artifacts to be ignored, while the R-peak still remains visible. However, with increased noise, performance still degrades, as seen in the difficult INCART dataset in which the other methods also yielded lower performances compared to those in other datasets. As a result, future works with noise or artifact suppression preprocessing might increase the performance of the algorithm. However, we would like to clarify that preprocessing was omitted to demonstrate the actual potential of the graph-based framework, without additional processing to artificially increase the performance. Moreover, without preprocessing, the parametric threshold and constant values remain traceable to real ECG structures, which allowed us to choose values that made logical sense, as well as providing a more interpretable parameter selection process. Furthermore, the structure of the ECGMorphGraph that was proposed in this work could be expanded to differentiate normal sinus beats from irregular beats in future research. This may open up the pathway for classification of irregular heartbeats without the need for an R-peak detection algorithm, as used by many research groups. Similarly, the graph structure could also be used to label other parts of an ECG wave, such as the T-wave or the P-wave, without first needing to locate the R-peak. Segmentation of an ECG wave would allow a better understanding of the cardiac activities as a whole. Lastly, we would like to restate that our algorithm achieved very good results through the topology of the graph which was designed and constructed in accordance with the real ECG wave morphology. A computerized algorithm could be developed in future research to automatically design a global graphical structure to be able to label and differentiate R-peaks, and better cost functions and thresholding functions could be used to better fit the morphology of ECG waves.

Author Contributions

Conceptualization, W.S., S.A. and N.T.-U.; methodology, W.S. and N.T.-U.; software, W.S.; validation, W.S., S.A. and N.T.-U.; formal analysis, W.S., S.A. and N.T.-U.; investigation, W.S., S.A. and N.T.-U.; resources, S.A. and N.T.-U.; data curation, W.S. and N.T.-U.; writing—original draft preparation, W.S., S.A. and N.T.-U.; writing—review and editing, W.S., S.A. and N.T.-U.; visualization, W.S. and N.T.-U.; supervision, N.T.-U.; project administration, N.T.-U.; funding acquisition, S.A. and N.T.-U. All authors have read and agreed to the published version of the manuscript.

Funding

This research received no external funding.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

The original data presented in the study are openly available in PhysioNet at https://physionet.org/, (accessed on 21 December 2024) or [17,18,19,20].

Acknowledgments

The authors would like to thank PhysioNet and the data owners for the datasets we used in this research. We also thank the anonymous reviewers very much for their valuable comments leading to the improvement of this work.

Conflicts of Interest

The authors declare no conflicts of interest.

References

  1. Bruce, K.; Moore, A.K.; Mello, I.; Hilliard, T.; Day, M. Basics of the 12-Lead ECG. Nursing 2023, 53, 20–25. [Google Scholar] [CrossRef] [PubMed]
  2. Pan, J.; Tompkins, W.J. A Real-Time QRS Detection Algorithm. IEEE Trans. Biomed. Eng. 1985, BME-32, 230–236. [Google Scholar] [CrossRef]
  3. Tiwari, R.; Kumar, R.; Malik, S.; Raj, T.; Kumar, P. Analysis of Heart Rate Variability and Implication of Different Factors on Heart Rate Variability. Curr. Cardiol. Rev. 2021, 17, e160721189770. [Google Scholar] [CrossRef] [PubMed]
  4. Souza, H.C.D.; Philbois, S.V.; Veiga, A.C.; Aguilar, B.A. Heart Rate Variability and Cardiovascular Fitness: What We Know so Far. Vasc. Health Risk Manag. 2021, 17, 701–711. [Google Scholar] [CrossRef]
  5. Kim, H.-G.; Cheon, E.-J.; Bai, D.-S.; Lee, Y.H.; Koo, B.-H. Stress and Heart Rate Variability: A Meta-Analysis and Review of the Literature. Psychiatry Investig. 2018, 15, 235–245. [Google Scholar] [CrossRef]
  6. De Alencar, J.N.; De Andrade Matos, V.F.; Scheffer, M.K.; Felicioni, S.P.; De Marchi, M.F.N.; Martínez-Sellés, M. ST Segment and T Wave Abnormalities: A Narrative Review. J. Electrocardiol. 2024, 85, 7–15. [Google Scholar] [CrossRef]
  7. Bayés-de-Luna, A.; Bacharova, L. New Electrocardiographic Aspects of the P Wave: Its Value in Clinical Cardiology. Noninvasive Electrocardiol. 2023, 28, e13053. [Google Scholar] [CrossRef]
  8. Park, J.-S.; Lee, S.-W.; Park, U. R Peak Detection Method Using Wavelet Transform and Modified Shannon Energy Envelope. J. Healthc. Eng. 2017, 2017, 4901017. [Google Scholar] [CrossRef]
  9. Félix, R.A.; Ochoa-Brust, A.; Mata-López, W.; Martínez-Peláez, R.; Mena, L.J.; Valdez-Velázquez, L.L. Fast Parabolic Fitting: An R-Peak Detection Algorithm for Wearable ECG Devices. Sensors 2023, 23, 8796. [Google Scholar] [CrossRef]
  10. Davies, H.J.; Hammour, G.; Zylinski, M.; Nassibi, A.; Stanković, L.; Mandic, D.P. The Deep-Match Framework: R-Peak Detection in Ear-ECG. IEEE Trans. Biomed. Eng. 2024, 71, 2014–2021. [Google Scholar] [CrossRef] [PubMed]
  11. Zahid, M.U.; Kiranyaz, S.; Ince, T.; Devecioglu, O.C.; Chowdhury, M.E.H.; Khandakar, A.; Tahir, A.; Gabbouj, M. Robust R-Peak Detection in Low-Quality Holter ECGs Using 1D Convolutional Neural Network. IEEE Trans. Biomed. Eng. 2022, 69, 119–128. [Google Scholar] [CrossRef]
  12. Bai, X.; Yang, G.; Bai, J.; Li, Y.; Luo, C.; Zhang, H. A Lightweight Network Based on Multi-Scale Convolutional Attention for QRS Complex Detection and Precise R-Peak Recognition. In Proceedings of the 2025 IEEE International Conference on Bioinformatics and Biomedicine (BIBM), Wuhan, China, 15–18 December 2025; IEEE: Piscataway, NJ, USA, 2025; pp. 4947–4954. [Google Scholar] [CrossRef]
  13. Yao, J.; Zhang, Y.; Dong, C. A Lightweight R Peak Detection Algorithm for Noisy ECG Signals. In Proceedings of the 2022 IEEE 22nd International Conference on Bioinformatics and Bioengineering (BIBE), Taichung, Taiwan, 7–9 November 2022; IEEE: Piscataway, NJ, USA, 2022; pp. 255–260. [Google Scholar] [CrossRef]
  14. Hsieh, F.; Chen, T.-L. A Novel R-Peak Detection Algorithm. IEEE Access 2025, 13, 210351–210359. [Google Scholar] [CrossRef]
  15. Koka, T.; Muma, M. Fast and Sample Accurate R-Peak Detection for Noisy ECG Using Visibility Graphs. In Proceedings of the 2022 44th Annual International Conference of the IEEE Engineering in Medicine & Biology Society (EMBC), Glasgow, Scotland, UK, 11–15 July 2022; IEEE: Piscataway, NJ, USA, 2022; pp. 121–126. [Google Scholar] [CrossRef]
  16. Fotoohinasab, A.; Hocking, T.; Afghah, F. A Graph-Constrained Changepoint Detection Approach for ECG Segmentation. In Proceedings of the 2020 42nd Annual International Conference of the IEEE Engineering in Medicine & Biology Society (EMBC), Montreal, QC, Canada, 20–24 July 2020; IEEE: Piscataway, NJ, USA, 2020; pp. 332–336. [Google Scholar] [CrossRef]
  17. Moody, G.B.; Mark, R.G. MIT-BIH Arrhythmia Database 2005. Available online: https://physionet.org/content/mitdb/1.0.0/ (accessed on 21 December 2024).
  18. Laguna, P.; Mark, R.G.; Goldberger, A.L.; Moody, G.B. The QT Database 1997. Available online: https://physionet.org/content/qtdb/1.0.0/ (accessed on 21 December 2024).
  19. Albrecht, P. The MIT-BIH ST Change Database 1999. Available online: https://physionet.org/content/stdb/1.0.0/ (accessed on 21 December 2024).
  20. Tihonenko, V.; Khaustov, A.; Ivanov, S.; Rivin, A. St.-Petersburg Institute of Cardiological Technics 12-Lead Arrhythmia Database 2008. Available online: https://physionet.org/content/incartdb/1.0.0/ (accessed on 21 December 2024).
  21. Chen, H.; Maharatna, K. An Automatic R and T Peak Detection Method Based on the Combination of Hierarchical Clustering and Discrete Wavelet Transform. IEEE J. Biomed. Health Inform. 2020, 24, 2825–2832. [Google Scholar] [CrossRef] [PubMed]
  22. Belkadi, M.A.; Daamouche, A.; Melgani, F. A Deep Neural Network Approach to QRS Detection Using Autoencoders. Expert. Syst. Appl. 2021, 184, 115528. [Google Scholar] [CrossRef]
  23. Ali, S.T.A.; Kim, S.; Kim, Y.-J. Towards Reliable ECG Analysis: Addressing Validation Gaps in the Electrocardiographic R-Peak Detection. Appl. Sci. 2024, 14, 10078. [Google Scholar] [CrossRef]
  24. Wu, L.; Xie, X.; Wang, Y. ECG Enhancement and R-Peak Detection Based on Window Variability. Healthcare 2021, 9, 227. [Google Scholar] [CrossRef]
  25. Habib, A.; Karmakar, C.; Yearwood, J. Impact of ECG Dataset Diversity on Generalization of CNN Model for Detecting QRS Complex. IEEE Access 2019, 7, 93275–93285. [Google Scholar] [CrossRef]
  26. Yun, D.; Lee, H.-C.; Jung, C.-W.; Kwon, S.; Lee, S.-R.; Kim, K.; Kim, Y.S.; Han, S.S. Robust R-Peak Detection in an Electrocardiogram with Stationary Wavelet Transformation and Separable Convolution. Sci. Rep. 2022, 12, 19638. [Google Scholar] [CrossRef] [PubMed]
  27. Qin, Q.; Li, J.; Yue, Y.; Liu, C. An Adaptive and Time-Efficient ECG R-Peak Detection Algorithm. J. Healthc. Eng. 2017, 2017, 5980541. [Google Scholar] [CrossRef]
  28. Nayak, C.; Saha, S.K.; Kar, R.; Mandal, D. An Efficient and Robust Digital Fractional Order Differentiator Based ECG Pre-Processor Design for QRS Detection. IEEE Trans. Biomed. Circuits Syst. 2019, 13, 682–696. [Google Scholar] [CrossRef] [PubMed]
  29. Nguyen, T.; Qin, X.; Dinh, A.; Bui, F. Low Resource Complexity R-Peak Detection Based on Triangle Template Matching and Moving Average Filter. Sensors 2019, 19, 3997. [Google Scholar] [CrossRef]
  30. Elgendi, M. Fast QRS Detection with an Optimized Knowledge-Based Method: Evaluation on 11 Standard ECG Databases. PLoS ONE 2013, 8, e73557. [Google Scholar] [CrossRef]
  31. Liu, H.-I.; Galindo, M.; Xie, H.; Wong, L.-K.; Shuai, H.-H.; Li, Y.-H.; Cheng, W.-H. Lightweight Deep Learning for Resource-Constrained Environments: A Survey. ACM Comput. Surv. 2024, 56, 1–42. [Google Scholar] [CrossRef]
Figure 1. Workflow of the proposed R-peak detection algorithm.
Figure 1. Workflow of the proposed R-peak detection algorithm.
Information 17 00535 g001
Figure 2. Sample signal in the record 302 of the ST CHANGE dataset (red marks are the annotated R-peaks).
Figure 2. Sample signal in the record 302 of the ST CHANGE dataset (red marks are the annotated R-peaks).
Information 17 00535 g002
Figure 3. Sample signal in the record I05 of the INCART dataset (red marks are the annotated R-peaks).
Figure 3. Sample signal in the record I05 of the INCART dataset (red marks are the annotated R-peaks).
Information 17 00535 g003
Figure 4. Sample signal in the record I01 of the INCART dataset (red marks are the annotated R-peaks).
Figure 4. Sample signal in the record I01 of the INCART dataset (red marks are the annotated R-peaks).
Information 17 00535 g004
Figure 5. Sample signal in the record 207 of the MIT-BIH dataset (red marks are the annotated R-peaks).
Figure 5. Sample signal in the record 207 of the MIT-BIH dataset (red marks are the annotated R-peaks).
Information 17 00535 g005
Figure 6. ECGMorphGraph: the proposed graph structure corresponding to ECG wave morphology. The index of each vertex can be referred to in Table 1.
Figure 6. ECGMorphGraph: the proposed graph structure corresponding to ECG wave morphology. The index of each vertex can be referred to in Table 1.
Information 17 00535 g006
Figure 7. Simplified layered ECGMorphGraph in which only edges from adjacent layers are shown. The edges from other layers are omitted to avoid showing extremely large number of edges that would make the graph unreadable. The location of each vertex in each layer corresponds to that in ECGMorphGraph shown in Figure 6.
Figure 7. Simplified layered ECGMorphGraph in which only edges from adjacent layers are shown. The edges from other layers are omitted to avoid showing extremely large number of edges that would make the graph unreadable. The location of each vertex in each layer corresponds to that in ECGMorphGraph shown in Figure 6.
Information 17 00535 g007
Figure 8. The pseudocode of the proposed algorithm.
Figure 8. The pseudocode of the proposed algorithm.
Information 17 00535 g008
Figure 9. An example result of the proposed algorithm from Record 103 of the MIT-BIH dataset. The red marks are the annotated R-peaks. The “R” symbol is the R-peak location labeled from the proposed algorithm.
Figure 9. An example result of the proposed algorithm from Record 103 of the MIT-BIH dataset. The red marks are the annotated R-peaks. The “R” symbol is the R-peak location labeled from the proposed algorithm.
Information 17 00535 g009
Figure 10. Examples of false positives from Record 207 of the MIT-BIH dataset. The black marks are the annotated flutter waves. The “R” symbol is the R-peak location labeled from the proposed algorithm.
Figure 10. Examples of false positives from Record 207 of the MIT-BIH dataset. The black marks are the annotated flutter waves. The “R” symbol is the R-peak location labeled from the proposed algorithm.
Information 17 00535 g010
Figure 11. Examples of false negatives in record 108 in the MIT-BIH dataset. The red marks are the annotated R-peaks. The “R” symbol is the R-peak location labeled from the proposed algorithm.
Figure 11. Examples of false negatives in record 108 in the MIT-BIH dataset. The red marks are the annotated R-peaks. The “R” symbol is the R-peak location labeled from the proposed algorithm.
Information 17 00535 g011
Figure 12. Record I01 of the INCART dataset. The red marks are the annotated R-peaks.
Figure 12. Record I01 of the INCART dataset. The red marks are the annotated R-peaks.
Information 17 00535 g012
Table 1. Vertices used in the proposed ECGMorphGraph.
Table 1. Vertices used in the proposed ECGMorphGraph.
Vertex   Type   j State l j ( × F s ) r j ( × F s ) α j δ g , j (/ F s )
0“Start”0.100.6000
1“R”0.010.0519.0
2“S”0.010.0815.4
3“S”0.010.2000
4“PQ”0.010.1027.2
5“Q”0.010.0815.4
6“R”0.010.05−19.0
7“S”0.010.08−15.4
8“S”0.010.2000
9“PQ”0.010.1027.2
10“Q”0.010.08−15.4
11“ST”0.050.1500
12“T”0.050.2510
13“ST”0.050.1500
14“T”0.050.25−10
15“UNK”0.000.0000
Table 2. Edges used in the proposed ECGMorphGraph.
Table 2. Edges used in the proposed ECGMorphGraph.
i (Vertex to)Vertices from β i δ d , i ( / F s ) b i
011001
12−101
13001
14101
15000
1510.200
21−10.050
32000
40000
54000
610−10.200
7610.050
87000
90001
109000
112000
3000
1211000
13000
137000
8000
1411000
13000
15All001010
Table 3. Overall R-peak detection performance of the proposed algorithm, for MIT-BIH dataset when R-peak difference threshold ( δ d , 1 ) is varied.
Table 3. Overall R-peak detection performance of the proposed algorithm, for MIT-BIH dataset when R-peak difference threshold ( δ d , 1 ) is varied.
ParameterValueAcc (%)Sens (%)PPV (%)F1 (%)DER (%)
R-peak difference threshold ( δ d , 1 )0.1099.1699.6099.5599.580.84
0.2099.0799.5999.4799.500.93
0.3099.1299.4699.6699.560.88
0.4099.2099.5099.6999.600.80
0.5099.0799.3999.6799.530.93
Table 4. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when S slope threshold ( δ g , 2 ) is varied.
Table 4. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when S slope threshold ( δ g , 2 ) is varied.
ParameterValueAcc (%)Sens (%)PPV (%)F1 (%)DER (%)
S   slope   threshold   ( δ g , 2 )399.0899.6299.4599.540.92
499.0899.6299.4699.540.92
599.0799.6099.4699.530.93
699.0699.5999.4799.530.94
799.0499.5799.4799.520.96
Table 5. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when PQ slope threshold ( δ g , 4 ) is varied.
Table 5. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when PQ slope threshold ( δ g , 4 ) is varied.
ParameterValueAcc (%)Sens (%)PPV (%)F1 (%)DER (%)
PQ slope threshold ( δ g , 4 )599.0599.5799.4899.520.95
699.0699.5899.4799.530.94
799.0799.6099.4799.530.93
899.0699.6099.4699.530.94
999.0599.6099.4499.520.95
Table 6. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when Q slope threshold ( δ g , 5 ) is varied.
Table 6. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when Q slope threshold ( δ g , 5 ) is varied.
ParameterValueAcc (%)Sens (%)PPV (%)F1 (%)DER (%)
Q   slope   threshold   ( δ g , 5 )399.0699.6199.4599.530.94
499.0799.6199.4699.530.93
599.0799.6099.4699.530.93
699.0899.6199.4799.540.92
799.0699.5899.4899.530.94
Table 7. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when adaptive threshold coefficients is varied.
Table 7. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when adaptive threshold coefficients is varied.
ParameterValueAcc (%)Sens (%)PPV (%)F1 (%)DER (%)
Adaptive threshold coefficient0.4099.0499.6699.3899.520.96
0.4599.0699.6399.4299.530.94
0.5099.0799.6099.4799.530.93
0.5599.0799.6099.4799.530.93
0.6099.0799.6099.4799.530.93
Table 8. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when some vertices are removed.
Table 8. Overall R-peak detection performance of the proposed algorithm for MIT-BIH dataset when some vertices are removed.
Vertex Id RemovedAcc (%)Sens (%)PPV (%)F1 (%)DER (%)
4, 9 (PQ)98.9499.6599.2899.461.06
2, 7 (S)98.5599.7098.8699.271.44
3, 8 (S)98.9999.5999.3999.491.01
5, 10 (Q)94.3595.6898.5597.095.65
12, 14 (T)98.9199.6099.2999.451.09
Table 9. Overall R-peak detection performance of the proposed algorithm in terms of accuracy, sensitivity, PPV, F1-score, DER, TP, FP, and FN. Tolerance window size is 150 milliseconds.
Table 9. Overall R-peak detection performance of the proposed algorithm in terms of accuracy, sensitivity, PPV, F1-score, DER, TP, FP, and FN. Tolerance window size is 150 milliseconds.
MIT-BIHQTST CHANGEINCART
Acc (%)99.0799.4699.2398.05
Sens (%)99.5999.5199.5698.78
PPV (%)99.4799.9499.6799.25
F1 (%)99.5399.7399.6199.01
DER (%)0.930.540.771.95
TP109,05286,57373,295173,748
FP585482461311
FN4424223212152
Table 10. Overall R-peak detection performance of the proposed algorithm in terms of accuracy, sensitivity, PPV, F1-score, DER, and their corresponding 95% and 99% confidence intervals. Tolerance window size is 150 milliseconds.
Table 10. Overall R-peak detection performance of the proposed algorithm in terms of accuracy, sensitivity, PPV, F1-score, DER, and their corresponding 95% and 99% confidence intervals. Tolerance window size is 150 milliseconds.
MIT-BIHQTST CHANGEINCART
 95% CI99% CI95% CI99% CI95% CI99% CI95% CI99% CI
Acc (%)[98.39, 99.78][98.15, 100.00] [99.09, 99.87][98.96, 100.00][98.58, 99.67][98.38, 99.86][97.32, 99.13][97.02, 99.43]
Sens (%)[99.41, 99.83][99.34, 99.90] [99.16, 99.93][99.03, 100.00][99.25, 99.92][99.13, 100.00][98.15, 99.67][97.90, 99.92]
PPV (%)[98.81, 100.00][98.59, 100.00] [99.87, 99.99][99.86, 100.00][99.23, 99.82][99.12, 99.93][98.90, 99.64][98.77, 99.76]
F1 (%)[99.15, 99.90][99.02, 100.00] [99.52, 99.94][99.45, 100.00][99.27, 99.84][99.17, 99.93][98.55, 99.57][98.39, 99.74]
DER (%)[0.22, 1.61][0.00, 1.85] [0.13, 0.91][0.00, 1.04][0.33, 1.42][0.14, 1.62][0.87, 2.68][0.57, 2.98]
Table 11. Comparison of the accuracy of different algorithms.
Table 11. Comparison of the accuracy of different algorithms.
DatasetsTolerance Window
Size (Milliseconds)
MIT-BIHQTST CHANGEINCART
Ref. [24]99.08---150
Ref. [9]99.3299.83--40
Ref. [21]99.8399.88--150
Ref. [27]98.8999.73--50
Ref. [29]99.51----
Ref. [28]99.8999.9499.86--
Ref. [25]97.5094.48-90.54150
Ref. [22]99.00---150
Ref. [26]99.8799.9799.8999.69150
Our algorithm99.0799.4699.2398.05150
Table 12. Comparison of the sensitivity of different algorithms.
Table 12. Comparison of the sensitivity of different algorithms.
DatasetsTolerance Window
Size (Milliseconds)
MIT-BIHQTST CHANGEINCART
Ref. [24]99.65---150
Ref. [9]99.6699.95--40
Ref. [21]99.89100.00--150
Ref. [27]99.3999.83--50
Ref. [29]99.8099.94---
Ref. [28]99.9599.9599.94--
Ref. [25]97.8093.45-85.26150
Ref. [22]99.7699.71-99.73150
Ref. [26]99.9399.9999.9499.84150
Ref. [30]99.7899.9999.9299.03-
Our algorithm99.5999.7995.8796.33150
Table 13. Comparison of the PPV of different algorithms.
Table 13. Comparison of the PPV of different algorithms.
DatasetsTolerance Window
Size (Milliseconds)
MIT-BIHQTST CHANGEINCART
Ref. [24]99.39---150
Ref. [9]99.6699.88--40
Ref. [21]99.9499.83--150
Ref. [27]99.4999.90--50
Ref. [29]99.8099.78---
Ref. [28]99.9499.9899.92--
Ref. [25]92.1089.68-90.33150
Ref. [22]99.2499.26-98.82150
Ref. [26]99.9499.9899.9599.86150
Ref. [30]99.8799.6799.7097.09-
Our algorithm99.4799.7798.9599.33150
Table 14. Comparison of the F1-scores of different algorithms.
Table 14. Comparison of the F1-scores of different algorithms.
DatasetsTolerance Window
Size (Milliseconds)
MIT-BIHQTST CHANGEINCART
Ref. [24]99.54---150
Ref. [9]99.6699.91--40
Ref. [21]99.9199.94--150
Ref. [27]99.4499.86--50
Ref. [29]99.75----
Ref. [28]99.9499.9799.93--
Our algorithm99.5399.7399.0199.61150
Table 15. Comparison of the DER of different algorithms.
Table 15. Comparison of the DER of different algorithms.
DatasetsTolerance Window
Size (Milliseconds)
MIT-BIHQTST CHANGEINCART
Ref. [24]0.92---150
Ref. [9]0.680.17--40
Ref. [21]0.170.12--150
Ref. [27]1.110.27--50
Ref. [29]0.490.29---
Ref. [28]0.110.060.14--
Ref. [22]1.001.03-1.45150
Our algorithm0.930.541.950.77150
Table 16. Comparison of methods of different algorithms.
Table 16. Comparison of methods of different algorithms.
Method UsedTraining/Testing MethodTolerance Window
Size (Milliseconds)
Ref. [24]Moving Average Filter + Window Variance Transform + Decision rules to detect R-peaksUnsupervised learning150
Ref. [9]Parabolic Fitting Unsupervised learning40
Ref. [21]Discrete Wavelet Transform + Hierarchical ClusteringUnsupervised learning150
Ref. [27]Wavelet Transform + Interval, Amplitude ThresholdingNo learning required50
Ref. [29]Triangle Template Matching + Adaptive ThresholdingSupervised learning-
Ref. [28]Digital Fractional Order Differentiator (DFOD), Hilbert Transform No training required-
Ref. [25]Convolutional Neural NetworkSupervised training with subsets of the dataset and validated with other datasets150
Ref. [22]Deep Neural NetworkSupervised training with data selected randomly from some datasets150
Ref. [26]Stationary Wavelet Transform, Separable ConvolutionMany models were created from training subsets of datasets150
Ref. [30]Moving Averages +
Thresholding
Supervised training-
Our algorithmWeighted Directed Graph Representation + Dynamic Programming + Adaptive ThresholdingNo learning required150
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Suwannoppadol, W.; Theera-Umpon, N.; Auephanwiriyakul, S. Robust Electrocardiographic R-Peak Detection via Wave Morphological Model Using Weighted Directed Graphs. Information 2026, 17, 535. https://doi.org/10.3390/info17060535

AMA Style

Suwannoppadol W, Theera-Umpon N, Auephanwiriyakul S. Robust Electrocardiographic R-Peak Detection via Wave Morphological Model Using Weighted Directed Graphs. Information. 2026; 17(6):535. https://doi.org/10.3390/info17060535

Chicago/Turabian Style

Suwannoppadol, Warinchai, Nipon Theera-Umpon, and Sansanee Auephanwiriyakul. 2026. "Robust Electrocardiographic R-Peak Detection via Wave Morphological Model Using Weighted Directed Graphs" Information 17, no. 6: 535. https://doi.org/10.3390/info17060535

APA Style

Suwannoppadol, W., Theera-Umpon, N., & Auephanwiriyakul, S. (2026). Robust Electrocardiographic R-Peak Detection via Wave Morphological Model Using Weighted Directed Graphs. Information, 17(6), 535. https://doi.org/10.3390/info17060535

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop