По сути, у меня есть массив значений вроде этого:
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;
}