Если все, что вам нужно знать, это если линия непрерывно растет для определенного количества сегментов, почему бы просто не иметь счетчик, который увеличивается до тех пор, пока не достигнет определенного количества сегментов, или не сбросится, если линия идет вниз, как:
int counter = 0;
for (int i = 1; i < datasize; i++) {
if (data[i] > data[i - 1]) {
++counter;
if (counter == THRESHOLD) {
println("trending up at %d.", i);
}
} else if (data[i] < data[i - 1]) {
counter = 0;
}
}
Если вы просто хотите увидеть, в целом ли линия идет вверх или вниз, вы могли бы просто сделать это:
if (data[datasize - 1] > data[0]) {
println("Overall trend is up.");
} else if (data[datasize - 1] < data[0]) {
println("Overall trend is down.");
} else {
print("Overall trend is flat.");
}
Если вы хотите улучшить прогноз -как, вот линия до этого момента, вот предположение, на что это будет похоже в будущем, есть два пути, чтобы исследовать.Первый - это «регрессионный анализ» или «линии регрессии».Это будет работать лучше всего для данных, которые обычно увеличиваются или уменьшаются с течением времени, и даст вам скорость этих увеличений или уменьшений (средний наклон линии).
Второй - «Быстрое преобразование Фурье».«- это полезно для линий, которые похожи на волны, в том смысле, что они остаются между минимальной и максимальной границами и имеют некоторый регулярный цикл (или число регулярных циклов, что и будет уравновешивать уравнение).
Повеселись.Это приятная проблема для решения.