Shannon信道容量和熵的实现问题

时间:2012-07-20 04:18:50

标签: matlab entropy information-theory

将相位空间分配到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熵与Shannon熵之间的区别在于技术术语较少?理解Kolgomorov复杂性返回的复杂性数字的重要性/含义令人困惑。

1 个答案:

答案 0 :(得分:3)

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

通常我们想要计算一种称为互信息的东西,这是衡量当我们在某些其他信号上调节信号时,信号的熵或“随机性”减少了多少。对于上面的代码,您尝试衡量x中的熵数量,或x给定y中的熵数量。这两个值之间的差异在于我们通过了解x了解了y的内容。我们称之为互信息,或者,如果我们首先除以您正在查看的系列的时间长度,则称为信道容量。 (源熵只是y的熵,假设y是你的“来源”。)

您的代码存在一些问题,如果不了解joint_freq的实现,我无法准确知道它们是什么。要计算x给定y的熵,您应该采用联合概率分布的二维矩阵,计算x方向上的熵总和,但是也采取了剩余维度的平均值。