calculateLowVariationAvg method
Implementation
int calculateLowVariationAvg(List<int?> list, int avgHR) {
/*if(bpmList.length/correctionCount <2){
//todo: remove
}*/
int minutes = (list.length / NO_OF_SAMPLES_PER_MINUTE).truncate();
minutes *= 3;
if (minutes == 0) return minutes;
List<int?> minuteRanges = List.filled(minutes, null, growable: false);
for (int interval = 0; interval < minutes; interval++) {
int max = 0;
int min = 0;
int start = (interval * (NO_OF_SAMPLES_PER_MINUTE / 3)).truncate();
int limit = ((1 + interval) * (NO_OF_SAMPLES_PER_MINUTE / 3)).truncate();
for (int i = start; i < limit; i++) {
int diff = avgHR - list[i]!;
if (diff > 0) {
if (max < diff) max = diff;
} else {
if (min > diff) min = diff;
}
}
minuteRanges[interval] = (max).abs() + (min).abs();
}
int sum = 0;
int count = 0;
for (int i = 0; i < minuteRanges.length; i++) {
if (minuteRanges[i]! < 30) {
int start = (i * (NO_OF_SAMPLES_PER_MINUTE / 3)).truncate();
int limit = (((1 + i) * (NO_OF_SAMPLES_PER_MINUTE / 3))).truncate();
int divisor = 0;
int value = 0;
for (int j = start; j < limit - 1; j++) {
if (list[i] != 0) {
divisor++;
value += list[i]!;
}
}
if (divisor != 0) {
value = (value / divisor).truncate();
count++;
}
sum += value;
}
}
if(!sum.isNaN && !count.isNaN) {
sum = (sum / count).isNaN?0:(sum/count).truncate();
} else {
sum = 0;
}
return sum;
}