心电信号中的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等。