I zasadniczo mają tablicę wartości takiego:Wdrażanie wykładnicza średnia ruchoma w Javie
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
Powyższa tablica jest zbyt uproszczona, jestem zbieranie 1 wartość na milisekundę w moim rzeczywisty kod i trzeba przetwarzać wyjście na algorytmie, który napisałem, aby znaleźć najbliższy szczyt przed punktem w czasie. Moja logika kończy się niepowodzeniem, ponieważ w powyższym przykładzie, 0.36
jest prawdziwym szczytem, ale mój algorytm będzie wyglądał wstecz i zobacz ostatni numer 0.25
jako szczyt, ponieważ przed nim jest spadek do 0.24
.
Celem jest pobranie tych wartości i zastosowanie do nich algorytmu, który "wygładzi" je tak, żebym miał więcej wartości liniowych. (tj .: chciałbym, aby moje wyniki były krzywoliniowe, nie poszarpane)
Powiedziano mi, żebym zastosował wykładniczy filtr średniej kroczącej do moich wartości. Jak mogę to zrobić? Naprawdę trudno mi czytać równania matematyczne, z kodem radzę sobie znacznie lepiej.
Jak przetwarzać wartości w mojej tablicy, stosując obliczeniowe obliczenie średniej ruchomej, aby je wyrównać?
float[] mydata = ...
mySmoothedData = exponentialMovingAverage(mydata, 0.5);
float[] exponentialMovingAverage(float[] input, float alpha) {
// what do I do here?
return result;
}
W rzeczywistości, EMA jest _easiest_ średnia ruchoma do kodu (pod warunkiem, trzeba gdzieś przechowywać stan państwowej jak Java obiekt), ponieważ nie trzeba wykonywać złożonego zarządzania stanami. –
Tak więc zasadniczo po prostu "dla (float dude: input) {output [index] = ema.average (dude); } '? –
@ TKKocheran: Dosyć. Czy to nie jest miłe, kiedy wszystko może być proste? (Jeśli zaczynasz z nową sekwencją, zdobądź nowy uśredniony). Zauważ, że kilka pierwszych haseł w uśrednionej sekwencji będzie przeskakiwać nieco ze względu na efekty graniczne, ale otrzymasz także te z innymi ruchomymi średnimi. Jednak korzystną zaletą jest to, że można zawinąć logikę średniej ruchomej do uśredniania i eksperymentować, nie zakłócając zbytnio reszty programu. –