C中的样条平滑算法

问题描述 投票:3回答:1

我在工业工厂工作,对于我们的一些在线建模,我们从热电偶,传感器等高频输出数据本质上看这些数据受到“噪声”影响,这使得对这种时间序列数据的实时分析变得困难。

我们使用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中是否存在任何现有算法?我应该补充一点,我的背景是工程而不是计算机科学,所以我自己写的任何代码都可能比现有的实现效率低。

c interpolation spline smoothing
1个回答
0
投票

这可能会有所帮助,但听起来你的C代码改编自原来的Algol可能已经足够了。我觉得你的代码不太可能是一个严重的性能瓶颈。

http://www.pcs.cnu.edu/~bbradie/cinterpolation.html

(编辑:这实际上是一个archive.org保存的副本)

© www.soinside.com 2019 - 2024. All rights reserved.