首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可变带宽数据链路日志数据约简

可变带宽数据链路日志数据约简
EN

Stack Overflow用户
提问于 2013-04-30 03:40:59
回答 2查看 154关注 0票数 0

我有一个嵌入式系统,它以1000秒的间隔产生样本(16位数)。可变的上行带宽最多可以每5ms传送一个样本,所以我正在寻找方法来自适应地降低数据速率,同时最小化重要信息的损失--在这种情况下,是一个时间间隔内的最小值和最大值。

我认为应该工作的方案涉及稀疏编码和有损压缩的变化。如下所示:

  1. 系统将在10 min间隔内存储最小值和最大值。
  2. 系统将在内部对这些数据对中的有限数量(例如50)进行排队。
  3. 不允许丢失最小值或最大值,但它们发生的时间间隔可能有所不同。
  4. 当队列满时,相邻的数据对将从队列的末尾开始组合,因此转换后的min/max对现在表示20 be的间隔。
  5. 该方案应是迭代的,以便在必要时进一步合并到40 is、80 is等。
  6. 该方案应在队列长度上线性加权,这样就不会对最新的数据进行合并,而对最老的数据进行必要的最大合并。

例如,对于长度为6的队列,连续的数据缩减应该会导致数据对覆盖这些间隔:

代码语言:javascript
复制
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

在左边添加新的样本,从右边读出数据。

这个想法显然属于lossy-compressionsparse-coding.的范畴。

我认为这是一个在上行带宽有限的数据日志应用程序中必须经常出现的问题,因此可能会出现一些“标准”解决方案。

我已刻意简化及遗漏其他事项,例如时间戳。

问题:

  1. 是否已经有算法来进行这种数据记录?我不是寻找标准的,有损的图片或视频压缩标志,但更具体的数据日志记录,如上文所述。
  2. 队列最合适的实现是什么?链接列表?树?
EN

回答 2

Stack Overflow用户

发布于 2013-05-01 01:58:20

定义一个符合您需要的组合成本函数,例如(len(i) + len(i+1)) / i^2,然后迭代数组以找到要替换的“最便宜”对。

票数 0
EN

Stack Overflow用户

发布于 2013-05-01 08:56:57

据我所知,您希望在一段时间内传输所有样本的min()和max()。

例如:你想每隔10毫秒传送一次最小/最大一次,每1ms取样一次?

如果您不需要个别的样本,您只需在每次抽样后对它们进行比较。

代码语言:javascript
复制
i=0; min=TYPE_MAX; max=TYPE_MIN;// First sample will always overwrite the initial values
while true do
    sample = getSample();
    if min>sample then
        min=sample

    if max<sample then
        max=sample

    if i%10 == 0 then
        send(min, max);
        // if each period should be handled seperatly: min=TYPE_MAX; max=TYPE_MIN;
done

您还可以通过发送数据来节省带宽(取决于示例数据:如果更改不太快,您将节省很多)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16291788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档