QT Interval Measurement: The PhysioNet/Computing in Cardiology Challenge 2006 1.0.0
(1,921 bytes)
function [T_off_out] = preciseT(in_ECG,points)
ekg = slidingavg(in_ECG,5);
T_off_out =0;
for i = 1:length(ekg)-13,
gradient2(i) = ekg(i+2)-ekg(i);
gradient4(i) = ekg(i+4)-ekg(i);
gradient8(i) = ekg(i+8)-ekg(i);
gradient12(i) = ekg(i+12)-ekg(i);
end
smallG = find(abs(gradient12)<20);
gradient12(smallG) = 0;
clear('smallG');
smallG = find(abs(gradient8)<10);
gradient8(smallG) = 0;
clear('smallG');
smallG = find(abs(gradient4)<10);
gradient4(smallG) = 0;
clear('smallG');
smallG = find(abs(gradient2)<10);
gradient2(smallG) = 0;
clear('smallG');
T_off_possible = zeros(1,length(points));
for i=1:length(points),
for point_fuzzy = points(i)-2:points(i)+2
if (i > round(length(points)/2)) && (i < round(length(points)/2)+1)
if (abs(sum(gradient12(point_fuzzy:point_fuzzy+1))))<30
if (abs(sum(gradient8(point_fuzzy:point_fuzzy+1))))<20
T_off_possible(i) = 0.5;
if (abs(sum(gradient4(point_fuzzy:point_fuzzy+1))))<20
T_off_possible(i) = 1;
if (abs(sum(gradient2(point_fuzzy:point_fuzzy+1))))<20
T_off_possible(i) = 2;
end
end
end
end
else
if (abs(sum(gradient12(point_fuzzy:point_fuzzy+1))))<30
if (abs(sum(gradient8(point_fuzzy:point_fuzzy+1))))<20
T_off_possible(i) = 0.25;
if (abs(sum(gradient4(point_fuzzy:point_fuzzy+1))))<20
T_off_possible(i) = 0.5;
if (abs(sum(gradient2(point_fuzzy:point_fuzzy+1))))<20
T_off_possible(i) = 1;
end
end
end
end
end
end
end
T_off_out = T_off_possible;