我在一家工厂的工程部门工作,对于我们的一些在线建模,我们查看来自热电偶、传感器等的高频输出数据,这些数据本质上会受到“噪声”影响,这使得对此类时间序列数据的实时分析变得困难.
我们使用 SAS 统计包进行离线分析,其中包括自己的平滑例程。SAS 的平滑例程基于 Christian Reinsch 1967 年的论文,可在此处获得:http ://www.cise.ufl.edu/class/cap5416fa10/resources/Reinsch_1967.pdf
作为概念证明,我能够用 C 重写 Reinsch 的 Algol 60 代码(C 是我最熟悉的编程语言,也是我们的工厂控制软件所用的语言),并且对我正在测试的输出感到满意我的带有示例数据集的代码。
我希望看到这个功能添加到我们的控制室,我们有自定义编写的趋势包等,这个功能是非常需要的。我担心算法的性能,尤其是在大型数据集上,我已经在 C 中搜索了现有的样条平滑算法,但似乎没有大量的选择。
我拥有相当流行的教科书“C 中的数值配方”,它有自己的三次样条插值实现,但由于使用自定义标题和重新映射数组索引、使用自定义“向量”等,发现这不合适, GNU 科学库 (GSL) 也有类似的做法。
理想情况下,我希望尽可能少地依赖外部库,因为人们对我们生产环境中的额外依赖项感到不舒服。“普通”C中是否有任何现有算法可用?我应该补充一点,我的背景是工程而不是计算机科学,所以我自己编写的任何代码都可能不如现有实现高效。