如何计算不独立于自身的信号的熵?

信息处理 声音的 噪音 随机的
2022-02-07 20:12:16

我真的不知道如何更好地表达这个,如果这个标题令人困惑,对不起。

基本上,我想使用来自 AM 无线电音频信号的噪声来生成随机数。为了有效地做到这一点,我需要知道我可以从一些位的信号数据中期望多少位的熵。

如果每个样本都是独立的,我可以使用概率轻松计算熵。问题是样本取决于之前的样本和之后的样本。我不知道如何解释这一点。

如何计算一部分信号的熵(以位为单位)?

1个回答

我认为答案是没有正确答案。虽然这是一个简单的问题,但答案有点开放。

您在询问与随机数生成相关的相关数据的熵。这方面的关键参考是NIST 特别出版物 800-90B,用于随机比特生成的熵源的建议查看第 5 节和第 6 节。您将面临两个问题;我的数据是否相关(非IID),如果是,它的熵率是多少?你已经意识到标准Ki=1npilogpi不合适。

您的数据是否相关?

这是第一步,NIST 建议进行置换测试,如下所示:-

排列

NIST 推荐了 11 项测试,所有这些测试都有些复杂。为了帮助(不是)他们在 GitHub 上发布了一些代码来实现这些测试。我不确定这是多么正式,但请参阅广受欢迎的How to interpret the entropy results for a NIST test file as to their soundness。一个显而易见的实施问题是T,TiR,图 4 中的相等性测试,第 2.2.2 节变得困难无界。简而言之,代码不能很好地用于现场使用。

什么是熵?

如果您设法让自己确信数据是非 IID,NIST 建议将另外 10 个复杂统计测试的最小值作为最小值。熵值。类似地,Python 和 C++ 代码在输出连贯且可信的熵估计时存在问题。也许您可以以另一种方式自己实施测试。

我做什么。

我也构建了随机数生成器,并使用了类似的排列测试,但只专注于压缩测试。压缩利用相关性并消除冗余。压缩也用于上述 NIST 非 IID 确认和熵估计测试。

可以计算出我所说的相关因子,cf,在压缩究竟对数据的相关性说了什么? 如果cf1那么数据是 IID,如果是非 IID cf>1. 然后我使用非置换压缩文件大小并除以 2 以获得保守的熵率。这种方法似乎和其他方法一样好,而且比大多数方法更健壮。我估计 24V 齐纳二极管在 10kSa/s 时大约为 1.6 位/字节。那是 16kbps 的加密强度熵。


笔记。

  1. 我现在使用 fp8 和 paq8px 压缩器,因为它们是我能找到的可以为我编译的最好的压缩器。他们会将 IID 数据压缩到理论香农限制的 1% 以内。
  2. 除以二作为安全预防措施,以允许改进压缩算法,同时意识到这些改进是渐进的,收益递减。
  3. 只是因为再除以二。