【发布时间】:2020-11-06 23:12:09
【问题描述】:
假设我有数据:0 (or near 0), 0, 0, ..., 1, 10, 52, 80, 100, 100, 100, 100 (for a while), 90, 45, 5, 0, 0, 0...
我想找到我的数据高原“中心”的索引(不一定是 int,我想要更高的精度)。
我的第一个想法是进行高斯拟合,但数据在中心有一段时间相当平坦。所以也许某种方形(?)适合。我也一直在研究使用 gsl 进行最小化,但我不知道最简单的方法是什么。
一种简单的方法是找到与中值对应的索引,但这只能给我 1 的精度。使用曲线拟合我可以做得更好。
注意:我使用 C 语言并且可以使用 GSL,但通用数学解决方案也可以!
【问题讨论】:
-
如果您打算大量使用这些数据,那么不妨先对其进行排序。之后,您可以简单地在大小为 n 的排序数组中获取项目编号 n/2 并获取中位数。
-
我猜不够精确。但我只是想我可以简单地计算数据的重心......
-
您能否定义“数据高原中心”,指定所需的精度,以及高原相对于两个斜率的大小?
-
0 (or near 0),- 这是什么意思?如果这些值是整数,0就是0。您是否正在谈论其他类型以获得 extra 精度? -
高原比斜坡大“几倍”(1 到 3 倍)。数据不是整数,随着测量的进行,总会有一些噪音。
标签: c curve-fitting gsl