香农信道容量和熵的实现问题



在将相空间分割成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));
  • 柯尔戈莫罗夫熵和香农熵在技术性较少的术语中有什么区别?理解柯尔戈莫罗夫复杂性返回的复杂度数的意义/含义是令人困惑的。

首先回答你的最后一个问题,柯尔莫果洛夫熵是一个系统可以采取的可能轨迹的熵,即它是系统可能演变的"随机性"的度量。另一方面,香农熵是系统状态随机性的度量。从您比较xy,而不是x的多个轨迹到y的多个轨迹这一事实来看,看起来你应该计算香农熵。

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

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

最新更新