patternMatchVariance static method
Implementation
static double patternMatchVariance(Int32List counters, List<int> pattern, double maxIndividualVariance) {
final int numCounters = counters.length;
int total = 0;
int patternLength = 0;
for (int i = 0; i < numCounters; i++) {
total += counters[i];
patternLength += pattern[i];
}
if (total < patternLength) return double.infinity;
final double unitBarWidth = total / patternLength;
final double scaledIndividualVariance = maxIndividualVariance * unitBarWidth;
double totalVariance = 0;
for (int x = 0; x < numCounters; x++) {
final int counter = counters[x];
final double scaledPattern = pattern[x] * unitBarWidth;
final double variance = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter;
if (variance > scaledIndividualVariance) return double.infinity;
totalVariance += variance;
}
return totalVariance / total;
}