【问题标题】:Implementation issues for Shannon's Channel capacity and entropy香农通道容量和熵的实现问题
【发布时间】:2012-07-20 04:18:50
【问题描述】:

在将相空间划分为Alpha 分区时,旨在找出该分区有多好。从这个角度来看,我们需要找出源熵。现在,我用谷歌搜索了很多,但找不到源熵是什么。谁能解释一下:

  • 香农熵与源熵有何不同,源熵如何实现?

  • 如何计算通道容量?下面是计算数据 x 的香农熵的代码。如果修改以下代码以计算通道容量,我将有义务。

x = x(1:end);
    if nargin == 1        
        p = freq(double(x));
    else
        if numel(x) ~= numel(y)
            e = -1;
            warning('Sizes of vector do not match.');
            return;
        end
        y = y(1:end);
        p = joint_freq(double(x), double(y));
    end

    % Compute Shannon entropy
    xlogy(repmat(256, [length(p) 1]), p);
    e = -sum(p .* xlogy(repmat(256, [length(p) 1]), p));
  • 用较少的技术术语来说,Kolgomorov 熵和香农熵有什么区别?理解 Kolgomorov 复杂度返回的复杂度数的重要性/含义令人困惑。

【问题讨论】:

    标签: matlab entropy information-theory


    【解决方案1】:

    首先解决您的最后一个问题,Kolmogorov 熵是系统可以采取的可能轨迹的熵,即它是系统可能演化的“随机性”的度量。另一方面,香农熵是衡量系统状态随机性的指标。从您将xy 进行比较,而不是将x 的多个轨迹与y 的多个轨迹进行比较,看来您应该计算香农熵。

    通常我们想要计算一种称为互信息的东西,它是衡量我们的信号的熵或“随机性”在我们以其他信号为条件时减少了多少的量度。对于上面的代码,您正在尝试测量x 中有多少熵,或者在给定y 的情况下x 中有多少熵。这两个值之间的区别在于我们通过了解y 发现了多少x。我们将这种不同称为互信息,或者,如果我们首先除以您正在查看的系列的时间长度,则称为通道容量。 (源熵就是y 的熵,假设y 是你的“源”)。

    你的代码有一些问题,在不知道joint_freq的实现的情况下我无法确切知道它们是什么。要计算给定yx 的熵,您应该采用联合概率分布的二维矩阵,像现在一样计算x 方向上的熵之和,然后沿剩余维度。

    【讨论】:

    • 感谢您的回复。您所说的“比较 x 与 y 的多个轨迹”是什么意思?在这种情况下,x 是在将其分割或量化为“y”之前的原始原始数据。那么,我应该使用“x”还是使用“y”来查找通道容量和熵?另外,您能否指出一个实现渠道容量?
    • 没有意识到y 只是连续信号x 的离散化;在那种情况下,我认为您的频道容量将只是y 的每单位时间的信息。如需进一步阅读,请尝试 herehere
    • 在回答cs.stackexchange.com/questions/2688/… 时,用户提到我需要输入用于离散化的符号出现的概率,而不是输入用于计算熵的联合概率。那么,正确的过程是什么?
    • 如果x 是连续的,您只需要计算y 的熵(根据各种符号的概率),正如我在上面的评论中所说。如果x 已经是离散的并且您正在进一步对其进行分箱,那么事情会变得更加复杂。
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多