Я работаю в области инжиниринга на промышленном предприятии, для некоторых наших онлайн-моделей мы смотрим на высокочастотные выходные данные термопар, датчиков и т. Д. По своей природе эти данные подвержены эффекту «шума», что делает живой анализ такого времени. данные серии сложно.
Мы используем статистический пакет SAS для автономного анализа, который включает в себя собственные процедуры сглаживания. Процедуры сглаживания SAS основаны на статье Кристиана Рейнша 1967 года, доступной здесь: http://www.cise.ufl.edu/class/cap5416fa10/resources/Reinsch_1967.pdf
В качестве подтверждения концепции я смог переписать код Reinsch Algol 60 на C (C - это язык программирования, с которым я больше всего знаком, а также язык, на котором написано наше программное обеспечение для управления установкой), и доволен выводом I ' я тестирую мой код с примерами наборов данных.
Мне бы хотелось, чтобы эта функциональность была добавлена в нашу диспетчерскую, у нас есть специально написанные трендовые пакеты и т. Д., Где эта функциональность крайне желательна. Я обеспокоен производительностью алгоритма, особенно для больших наборов данных, я искал уже существующие алгоритмы сглаживания сплайнов в C, но, похоже, выбора не так много.
У меня есть достаточно популярный учебник «Числовые рецепты в C», в котором есть собственная реализация кубической сплайн-интерполяции, но он оказался неподходящим из-за использования пользовательских заголовков и переназначения признаков массива, использования пользовательских «векторов». и т.д., научная библиотека GNU (GSL) также делает подобное.
В идеале я бы хотел как можно меньше полагаться на внешние библиотеки, поскольку людям становится неловко от дополнительных зависимостей в нашей производственной среде. Существуют ли какие-либо алгоритмы на «простом» C? Я должен добавить, что мой опыт работы в области инженерии, а не информатики, поэтому любой код, который я пишу сам, вероятно, будет менее эффективным, чем существующие реализации.