У меня по существу есть массив значений, подобных этому:
0.25, 0.24, 0.27, 0.26, 0.29, 0.34, 0.32, 0.36, 0.32, 0.28, 0.25, 0.24, 0.25
Приведенный выше массив упрощен, я собираю 1 значение в миллисекунду в своем реальном коде, и мне нужно обработать вывод алгоритма, который я написал, чтобы найти ближайший пик до определенного момента времени. Моя логика не работает, потому что в моем примере выше, 0.36
- это реальный пик, но мой алгоритм будет смотреть назад и видеть самое последнее число 0.25
как пик, так как перед ним наблюдается уменьшение до 0.24
.
Цель состоит в том, чтобы взять эти значения и применить к ним алгоритм, который немного "сгладит" их, чтобы у меня было больше линейных значений. (т.е. я хотел бы, чтобы мои результаты были пышными, а не неровными)
Мне сказали применить экспоненциальный фильтр скользящих средних к моим значениям. Как я могу это сделать? Мне очень трудно читать математические уравнения, я гораздо лучше разбираюсь в коде.
Как мне обработать значения в моем массиве, применяя экспоненциальное вычисление скользящего среднего, чтобы выровнять их?
float[] mydata = ...
mySmoothedData = exponentialMovingAverage(mydata, 0.5);
float[] exponentialMovingAverage(float[] input, float alpha) {
// what do I do here?
return result;
}