心电信号中的R峰是确定心率和节律、以及检测其它波形特征点(图1A)的基础。R峰的准确检测是心率变异性分析、心拍分割和心律失常识别重要的处理步骤。

现有的心电信号R峰检测方法主要为基于规则的决策法和基于深度学习的检测方法。基于规则的决策法通常对心电信号进行时域或频域变换,增强R波分量,抑制其他波形和各种噪声分量,在增强R波分量的变换信号中以阈值法进行点检测,再通过启发式的后处理校正R峰位置。然而,规则难以涵盖心电信号的各种复杂情况,如QRS波群具有多种形态(图1B)、可穿戴式心电信号存在复杂干扰(图1C)、以及不同病人的心率差异大等;另外,规则的归纳依赖于丰富的领域知识,难以在各种心律失常事件中精确地检测出R峰,漏检率和误检率高。
鉴于此,提出一种基于双差分值和RR间隔处理的心电信号R峰检测算法,运行环境为MATLAB R2018A。
for i = 1:size(qrs_regions, 1)
    qrs_start = qrs_regions(i, 1);
    qrs_end = qrs_regions(i, 2);
    
    % Ensure QRS window does not extend beyond the signal
    qrs_start = max(qrs_start, 1);
    qrs_end = min(qrs_end, length(y));
    
    % Extract the QRS window
    qrs_window = y(qrs_start:qrs_end);
    
    % Calculate the maximum and minimum amplitudes
    max_amplitude = max(qrs_window);
    min_amplitude = min(qrs_window);
    
    % Calculate the mean of maximum and minimum amplitudes
    mean_amplitude = (max_amplitude + min_amplitude) / 2;
    
    % Calculate relative magnitudes by subtracting the mean from all data points
    relative_magnitudes = qrs_window - mean_amplitude;
    
    % Find the position of the maximum relative magnitude within the window
    [~, max_rel_magnitude_index] = max(relative_magnitudes);
    
    % Convert the relative index to the absolute index
    r_peak_location = qrs_start - 1 + max_rel_magnitude_index;
    
    % Add the R-peak location to the list
    r_peak_locations = [r_peak_locations, r_peak_location];
    完整代码:https://mbd.pub/o/bread/mbd-ZZiUl55v
end 
 









工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。


















