Привет, кодач девеЛОРч, продолжаю делать очередное OpenSource поделие.


Само поделие тут.


Это будет либа с оценивающими фильтрами.


Особенности:



  • Старался писать КАК ДИДЫ в программе «Аполон».

  • No dynamic memory allocation.

  • Использование [ну типа] cache-aware алгоритмов.

  • Выполнение на архитектурах с аппаратной плавающей точкой.

  • Использование стабилизированных численных методов.

  • Принятие того факта, что у нас тут не NASA, соответственно, пользователи могут косячить в моделях процессов и наблюдений. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия этих косяков.

  • Принятие того факта, что шумы могут быть не Гауссовы. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия неверных гипотез о шумах.

  • Прототипирование на Python c использованием буквально тех же реализаций алгоритмов, что и в продакшоне, посредством Cython-обертки над либой.


Итак, ближе к сути: есть несколько версий функций (в данный момент - две, запланировано до четырёх), например: раз и два.


Отличаются они тем, что первая - обычная реализация, как в учебнике, а вторая - с адаптивной коррекцией, на случай, если пользователь накосячил в модели процесса, или что-то «поломалось» в объекте наблюдения.


Отличия могут быть довольно небольшими, но они сожрут какое-то количество мегафлопс и памяти.


Вопрос к знатокам:


Стоит ли делать несколько вариантов функций, как сейчас, или оставить самый сложный?


З.Ы.: И да, если это применять, например, при адаптивном подавлении шумов от производственного оборудования в наушниках у рабочего, то частоты вызова могут быть несколько килогерц (в данном случае - от восьми) для нескольких объектов, и звук будет идти с нескольких микрофонов.









 , , , ,






URL записи