calculateNDecelerations method
Calculates the number of decelerations.
Implementation
void calculateNDecelerations() {
List<MarkerIndices> decelerations = [];
int size = millisecondsEpoch.length;
MarkerIndices deceleration = MarkerIndices();
int counter1 = 0, counter2 = 0, n = 0;
//List<int> beatsBpm = new int[size];
bool isDeacceleration = false;
/*for (int j = 0; j < size; j++) {
if (beats[j] != 0)
beatsBpm[j] = SIXTY_THOUSAND_MS / (int) beats[j];
else
beatsBpm[j] = 0;
}*/
for (int i = 0; i < size; i++) {
if ((millisecondsEpoch[i]! - baselineFHRDR![i]!) == 0) {
if (isDeacceleration) {
deceleration = MarkerIndices();
deceleration.setFrom(((i - counter1) * factor).truncate());
deceleration.setTo(((i) * factor).truncate());
decelerations.add(deceleration);
}
counter1 = 0;
isDeacceleration = false;
continue;
}
/** first criteria **/
if (SIXTY_THOUSAND_MS /
(millisecondsEpoch[i]! - baselineFHRDR![i]!).truncate() >=
10) {
counter1++;
if (counter1 >= 16 && !isDeacceleration) {
// 60 seconds = 16 samples
isDeacceleration = true;
n++;
}
} else {
if (isDeacceleration) {
deceleration = MarkerIndices();
deceleration.setFrom(((i - counter1) * factor).truncate());
deceleration.setTo(((i) * factor).truncate());
decelerations.add(deceleration);
}
counter1 = 0;
isDeacceleration = false;
}
}
isDeacceleration = false; //restore after first for loop
for (int i = 0; i < size; i++) {
if ((millisecondsEpoch[i]! - baselineFHRDR![i]!) == 0) {
if (isDeacceleration) {
deceleration = MarkerIndices();
deceleration.setFrom(((i - counter2) * factor).truncate());
deceleration.setTo(((i) * factor).truncate());
decelerations.add(deceleration);
}
counter2 = 0;
isDeacceleration = false;
continue;
}
/** second criteria **/
if (SIXTY_THOUSAND_MS / (millisecondsEpoch[i]! - baselineFHRDR![i]!) >= 20) {
counter2++;
if (counter2 >= 8 && counter2 < 16 && !isDeacceleration) {
// 30 seconds = 8 samples
isDeacceleration = true;
n++;
} else {
if (isDeacceleration) {
deceleration = MarkerIndices();
deceleration.setFrom(((i - counter2) * factor).truncate());
deceleration.setTo(((i) * factor).truncate());
decelerations.add(deceleration);
}
counter2 = 0;
isDeacceleration = false;
}
}
}
nDeaccelerations = n;
nDecelerationList = decelerations;
return;
}