在将相空间分割成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));
- 柯尔戈莫罗夫熵和香农熵在技术性较少的术语中有什么区别?理解柯尔戈莫罗夫复杂性返回的复杂度数的意义/含义是令人困惑的。
首先回答你的最后一个问题,柯尔莫果洛夫熵是一个系统可以采取的可能轨迹的熵,即它是系统可能演变的"随机性"的度量。另一方面,香农熵是系统状态随机性的度量。从您比较x
与y
,而不是x
的多个轨迹到y
的多个轨迹这一事实来看,看起来你应该计算香农熵。
通常,我们想要计算一种称为互信息的东西,它是衡量当我们以其他信号为条件时信号的熵或"随机性"减少了多少的量度。在上面的代码中,您正在尝试测量x
中有多少熵,或者在给定y
x
中有多少熵。这两个值之间的区别在于我们通过了解y
对x
的了解程度。我们称之为互信息,或者,如果我们首先除以您正在查看的系列的时间长度,则称为通道容量。(源熵只是y
的熵,假设y
是你的"源"(。
你的代码有一些问题,如果不了解joint_freq
的实现,我就无法确切知道它们是什么。要计算给定x
y
的熵,您应该采用联合概率分布的二维矩阵,像现在一样计算x
方向上的熵和,然后沿剩余维度取平均值。