Matlab:熵与数字化代码长度的关系图

Matlab : Plot of entropy vs digitized code length

[帐篷地图][1]是一个时间离散的动力系统。映射的迭代产生时间序列。

当使用阈值 = 0.5 以 0/1 离散化该系统的熵时,H = log_2(2) = 0.69 大约。我想获得一个以 Y 轴为熵,以 X 轴为样本数或时间序列长度的图表。我写了一个代码,通过改变时间序列的长度来获得熵。 objective 是为了查看离散化时间序列的长度,我得到熵 H。然而,代码无限循环,永远不会达到熵值 H。有人可以帮忙获取图表吗?谢谢。

  [1]: https://en.wikipedia.org/wiki/Tent_map

你是说 lambda 必须完全等于 log(2)。当熵下降到 log(2) 以下时,它会跳过这个值(例如,而不是正好是 log(2),迭代可能是 0.69309,它更小)。尝试替换行

while(lambda ~=H)

tol=0.01;
while(~(abs(lambda-H)<tol))

这意味着只要 lambda 接近 H(在公差 tol 内)它就会退出。

如果您的 tol 太小(尝试 0.001),迭代将再次跳过它,您将回到之前遇到的问题。