C中的样条平滑算法

时间:2011-02-22 00:17:01

标签: c interpolation spline smoothing

我在工业工厂工作,对于我们的一些在线建模,我们从热电偶,传感器等高频输出数据本质上看这些数据会产生“噪音”效应,从而对这种时间进行实时分析系列数据很难。

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

1 个答案:

答案 0 :(得分:0)

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

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

(编辑:这实际上转到了archive.org保存的副本)