Я использую Arduino Leonardo и библиотеку GPSTiny++ для разбора строк NMEA с моего GPS-приемника. В этом фрагменте кода я усредняю значения SNR для всех спутников, которые заблокированы (используются для навигации). Значение avg предоставляет некоторую общую информацию об общей производительности, но я также действительно ищу значения avg Top 4.
Я считаю, что мне нужно будет сделать какой-то алгоритм сортировки. Прибавьте через верхние 4 и усредните эти значения.
Вот фрагмент моего выходного окна: 12/13 0,92 SNR=17 10 27 27 30 29 25 27 33 0 0 0 31 25,60 0,00
Предпоследнее число является средним.
Как начать?
int totalSNR = 0;
float avgSNR = 0;
int count = 0;
Serial.print(F(" SNR="));
for (int i = 0; i < MAX_SATELLITES; ++i)
if (sats[i].active)
{
if (sats[i].snr > 0) {
count++;
totalSNR = totalSNR + sats[i].snr;
}
Serial.print(sats[i].snr);
Serial.print(F(" "));
}
avgSNR = float(totalSNR) / float(count);
Serial.print(avgSNR);