【问题标题】:Compression algorithms for a sequence of integers整数序列的压缩算法
【发布时间】:2016-01-17 05:54:11
【问题描述】:

对于大整数序列(A/D 转换器数据)是否有任何好的压缩算法。有similar question

但在我的情况下数据不同。它可以是消极的或积极的,并且像波浪数据一样变化。

EDIT1:添加了样本数据

Please refer to this file 用于数据样本

【问题讨论】:

    标签: algorithm compression


    【解决方案1】:

    通常,如果您对信号有一些了解,可以使用它来根据之前的值预测下一个值。然后 - 压缩预测值和实际值之间的差异。

    如果预测好,则差异会很小,并且它们的压缩效果会很好。

    如果不查看数据并了解其物理性质,任何更具体的事情都是不可能的。

    更新:

    如果预测非常好,并且使用了所有关于依赖关系的知识,那么差异可能是独立的,并且算术编码之类的东西对它们有用。

    【讨论】:

    • 我只想选择正确的,但需要一些有关现有方法的信息。需要无损压缩
    【解决方案2】:

    您想要一个 Delta 编码,然后您想要应用一个 RLE 或一个 Golomb 代码。哥伦布密码可以和霍夫曼密码一样好。

    【讨论】:

    • 如果我使用没有 Delta 编码的 Huffman 码怎么办?这将是 int 值(每个 4 个字节),我将把该数据视为一个字节序列。每个字节可以取 256 个值。你认为这会奏效吗?
    • 所以最后你有 256 个字母?霍夫曼会做得很好(我对此有一些经验),但我会尝试使用哥伦布代码。
    • 哥伦布码由 65536 字节 50280 字节组成。不好...我至少需要原始尺寸的 30%。
    • 在我看来 FLAC 也使用 Golomb-Code。也许可以复制那个线性预测?
    • 我会考虑的。霍夫曼代码失败。可能是因为数据是波状的,而 DELTA ENcode 在简单的情况下 (a[n] -= a[n-1]) 给出的优势不是那么好。 65kb -> 仅 61kb。使用 Delta 编码:65 -> 55kb。作为比较,Winrar 给出了 48 kb。但我至少需要 30%,65->20kb。有什么想法吗?
    【解决方案3】:

    几乎可以应用任何标准的字节串压缩算法;毕竟,任何数据文件都可以解释为有符号整数序列。您认为您的特定整数有什么特别之处可以使它们适应一些更具体的算法吗?你提到了波浪数据;不妨看看专为音频数据设计的FLAC;如果您的数据具有相似的特征,那么这些技术可能很有价值。

    【讨论】:

      【解决方案4】:

      您可以区分数据,然后在合适的子区域(即拐点之间)应用 RLE。

      【讨论】:

        猜你喜欢
        • 2010-09-21
        • 2012-09-21
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-03
        相关资源
        最近更新 更多