QT Interval Measurement: The PhysioNet/Computing in Cardiology Challenge 2006 1.0.0
(2,416 bytes)
% correct_Q_on.m - Searches for better Q_ons in the +-20area of the
% suggested Q_on by Find Q_on.m
% Copyright (C) 2006 Michal Huptych, Vaclav Chudacek
% This software is released under the terms of the GNU General
% Public License (http://www.gnu.org/copyleft/gpl.html).
function korekceQ = correct_Q_on(ECGch,Q_on_FINAL_abs, Q_on_window_start, Q_on_window_stop)
k4r = 0; k6r = 0; k8r = 0;
k4l = 0; k6l = 0; k8l = 0;
gradient4right = abs(ECGch(Q_on_window_stop:-4:Q_on_FINAL_abs+4)-ECGch(Q_on_window_stop-4:-4:Q_on_FINAL_abs));
gradient4right = gradient4right(length(gradient4right):-1:1);
gradient6right = abs(ECGch(Q_on_window_stop:-6:Q_on_FINAL_abs+6)-ECGch(Q_on_window_stop-6:-6:Q_on_FINAL_abs));
gradient6right = gradient6right(length(gradient6right):-1:1);
gradient8right = abs(ECGch(Q_on_window_stop:-8:Q_on_FINAL_abs+8)-ECGch(Q_on_window_stop-8:-8:Q_on_FINAL_abs));
gradient8right = gradient8right(length(gradient8right):-1:1);
for i = 1:length(gradient4right)
if (gradient4right(i) < 30)
k4r = k4r+4;
end
end
for i = 1:length(gradient6right)
if (gradient6right(i) < 30)
k6r = k6r+6;
end
end
for i = 1:length(gradient8right)
if (gradient8right(i) < 30)
k8r = k8r+8;
end
end
korekceQ = median([k4r k6r k8r]);
Q_on_FINAL_abs = Q_on_FINAL_abs + korekceQ;
if (((Q_on_FINAL_abs+20)-Q_on_FINAL_abs) > 35 && (Q_on_FINAL_abs -(Q_on_FINAL_abs-20)) > 35)
gradient4left = abs(ECGch(Q_on_FINAL_abs:-4:Q_on_window_start+4)-ECGch(Q_on_FINAL_abs-4:-4:Q_on_window_start));
gradient4left = gradient4left(length(gradient4left):-1:1);
gradient6left = abs(ECGch(Q_on_FINAL_abs:-6:Q_on_window_start+6)-ECGch(Q_on_FINAL_abs-6:-6:Q_on_window_start));
gradient6left = gradient6left(length(gradient6left):-1:1);
gradient8left = abs(ECGch(Q_on_FINAL_abs:-8:Q_on_window_start+8)-ECGch(Q_on_FINAL_abs-8:-8:Q_on_window_start));
gradient8left = gradient8left(length(gradient8left):-1:1);
for i = 1:length(gradient4left)
if (gradient4left(i) > 30)
k4l = k4l-4;
end
end
for i = 1:length(gradient6left)
if (gradient6left(i) > 30)
k6l = k6l-6;
end
end
for i = 1:length(gradient8left)
if (gradient8left(i) > 30)
k8l = k8l-8;
end
end
korekceQ = median([k4l k6l k8l]);
end