我有一个嵌入式系统,它以1毫秒的间隔生成样本(16位数字)。可变的上行链路带宽最多可以每5ms传输一次采样,所以我想寻找方法来自适应地降低数据速率,同时最大限度地减少重要信息的损失 - 在这种情况下是时间间隔中的最小值和最大值。可变带宽数据链接的日志数据缩减
我认为应该工作的方案涉及稀疏编码和有损压缩的变体。像这样:
- 系统将在10ms间隔内存储最小值和最大值。
- 系统将在内部排队这些数据对中的有限数量(如50)。
- 不允许损失最小值或最大值,但它们发生的时间间隔可能会有所不同。
- 当队列满时,相邻数据对将从队列末尾开始合并,以便转换后的最小/最大值对现在表示20ms间隔。
- 该方案应该是迭代的,以便进一步的时间间隔结合到40ms,80ms等在必要时完成。
- 该方案应该在队列长度上进行线性加权,以便不存在最新数据的组合和最旧数据的最大必要组合。
例如长度为6的队列中,连续的数据减少应导致数据对,以覆盖这些间隔:
initial: 10 10 10 10 10 10 (60ms, queue full)
70ms: 10 10 10 10 10 20
80ms: 10 10 10 10 20 20
90ms: 10 10 20 20 20 20
100ms: 10 10 20 20 20 40
110ms: 10 10 20 20 40 40
120ms: 10 20 20 20 40 40
130ms: 10 20 20 40 40 40
140ms: 10 20 20 40 40 80
新样品在左边添加,数据从右侧读出。
这个想法显然落入有损压缩的类别和稀疏编码。
我认为这是一个在上行链路带宽有限的数据记录应用中经常出现的问题,因此可能会出现一些“标准”解决方案。
我故意简化并省略了其他问题,如时间戳。
问题:
- 是否有已经算法,它做这种数据记录的?我不是在寻找标准的,有损图像或视频压缩算法,而是如上所述的更特定于数据记录的东西。
- 什么是最适合队列的实现?链接列表?树?
谢谢。我应该更具体。很明显,我最初的算法忽略了单个样本,但它从不松动最小值和最大值。它也可以被看作是“稀疏编码”的一种形式。 – 2013-04-30 23:34:11