Апроксимація кривої (згладжування шуму і піків в числовому ряду) - stack overflow російською

Є одновимірний масив (розмірністю в кілька тисяч елементів) речових числі. Якщо побудувати графік за цими значеннями, то видно що є деяка флуктуація (розкид) значень (з нечисленними різкими піками).

Приклад (для наочності, інтервали вимірів рівномірні):

  • показання температури
  • рівень освітленості
  • Заряд батареї
  • рівня рідини
  • і т.д.

вих. 10 12 15 40 17 16 12 10 22 12 14 15 14 10 12
згладжені.

10 13 15 16 16 14 12 16 14 13 14 14 13 11 12

Потрібно не збільшуючи число точок згладити свідчення:

Апроксимація кривої (згладжування шуму і піків в числовому ряду) - stack overflow російською

(Приблизний нарис: "згладжена лінія" - свідчення без різких стрибків)

Ясна річ, що для цього потрібна апроксимація даних, але я вже кілька днів важко привести знайдений алгоритм апроксимації кривої Безьє до необхідного виду:

де, p1 згладжувати проміжне значення між двома своїми сусідами, t = 0.5 (по ідеї саме при 0.5 повинна братися саме проміжне значення).

Потім Знайшов алгоритм тут. а сам він викладений тут.
Але даний алгоритм не підходить тому що працюємо максимум на 32 точках, та й з факторіалами він занадто довго на JS буде виконуватися, якщо взагалі буде. А записати алгоритм без факториалов (це ніби можливо, якщо вірити формулами з Вікіпедії) у мене не виходить.

Ще можна використовувати наведену мною формулу і пройтися нею по ряду, але не думаю що це хороша ідея. Якби можна було використовувати за раз більше 32 точок (хоча б 100), то справа була б веселіше. Але я просто не знаю як це записати формулою по якій вже писати алгоритм.

Хто-небудь знає як в числовому ряду згладить "шум" і "піки"?
Б'юся вже не один день але щось виходить визначитися з алгоритмом.
Я в математиці не дуже, тому не можу продертися через теорію до формули.
Сподіваюся хтось мені з цим допоможе.

Пробував використовувати "ковзне середнє" (за порадою @lampa), але дані сильно спотворюються. Ось код (начебто не накосячілі, але хто його знає):

Але в результаті все одно зупинився на вихідному варіанті - згладжування Безьє (квадратичної кривої):

4-ри проходу дають задовільний результат.

PS Якщо не буде варіанту краще, то залишуся на цьому варіанті.

Коротше дивись, що я тут придумав:

Схожі статті