为图表选择代表性样本的算法

4

示例:
我有一定时间段内的100个样本。但是我只能使用10个值来绘制折线图。我可以使用什么算法来计算这10个代表性的值,以使图表看起来与使用所有100个确切样本绘制它相似。

天真的算法计算每个接下来10个样本的平均值不能很好地反映图表中的峰值。


除非您对输入信号有更多了解,否则您不会比简单平均值更好。 - Sword22
1个回答

6
你可以使用Douglas-Peucker算法来获得最优的欠采样表示。
该算法从原始数据集的端点开始构建欠采样集。每一步都会将原始数据集中与欠采样表示“最远”(最大误差)的点添加到欠采样集中。通过这种方式,算法包括原始数据集中的重要峰值,并构造了一个误差最小的欠采样表示。
由于您的欠采样集只允许包含10个点,因此您可以将算法设置为仅将欠采样集扩展到10个点的大小。
如果您的原始数据集包含太多峰值,则无法捕获它们并满足大小约束。
希望这能帮到您。

+1 但由于只能有10个样本,不是最多只能有5个峰值吗(因为需要5个低谷来分离峰值)。 - Andrew Leach
100和10只是示例演示。实际上,代表值的数量为200,样本数量可以是1000或10000。 - Petr Felzmann
似乎 Ramer-Douglas-Peucker 算法总是从给定的样本中选择代表值。然而,我的要求更弱。代表值可以是计算出来的值,不需要是从样本中精确取出的一个值。 - Petr Felzmann
@PetrFelzmann:这种方法应该适用于任意数量的样本集,因此没有问题。你说得对,这种方法从原始集合中进行采样,而不是计算新值。目前还不清楚计算新值是否一定更好。例如,任何类型的平均化都会倾向于平滑峰值-正如你在问题中指出的那样。如果你指出了所描述方法的问题,或许可以提出进一步的建议... - Darren Engwirda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接