【发布时间】:2012-12-16 03:44:58
【问题描述】:
我遇到了一些相关的问题(例如this、this、this 和 this),但它们都涉及将数据拟合到已知曲线。有没有办法将给定的数据拟合到未知曲线?我的意思是,给定一些数据,算法会给我一个拟合,它是一个函数或函数的总和。我正在用 C 编程,但我完全不知道如何使用 gsl 包来做到这一点。我愿意使用任何可以(理想情况下)通过 C 进行管道传输的东西。但是对于我应该寻找的方向的任何帮助将不胜感激。
编辑:这基本上是我收集的实验(物理)数据,所以数据会有一些被加性高斯分布噪声修改的趋势。一般来说,趋势是非线性的,所以我猜线性回归拟合方法是不合适的。至于排序,数据是按时间排序的,所以曲线一定要按这个顺序拟合。
【问题讨论】:
-
“我的意思是,给定一些数据,算法会给我一个拟合,它是一个函数或函数的总和”:那么你的曲线被称为某些函数的总和。我猜Taylor series 和Fourier series 可能是您正在寻找的,因为它们允许将函数表示为项的无限总和。
-
这有点未指定。有很多曲线拟合方法(回归、泰勒级数、傅里叶、样条等),但它们都是针对特定应用量身定制的。在不了解您的数据的情况下(即最初是什么产生了潜在趋势),很难给出具体的答案。
-
您是否知道数据的排序(也称为参数化),或者它是否也会根据曲线拟合而发生变化?即,如果您的积分排序为:{Pt1, Pt2, Pt3};您是否希望它们在投影到曲线上时以相同的顺序结束,或者它们最终可能成为 {Pt2, Pt1, Pt3} 之类的东西?如果顺序是固定的,@amit 下面的回答似乎是合理的。否则,有更复杂的算法可以根据一些错误对数据集进行排序,同时提供拟合。请在您的问题中详细说明。
标签: c algorithm statistics curve-fitting