不能使用“直方图”来计算熵
14日视图(30天)
显示旧的评论
z8080
2021年9月9日
我想计算不同的熵向量。我要使用类似:
X = randn (1100);
h1 =直方图(X,“归一化”,“概率”);
概率= h1.Values;
熵=总和(概率。* log2(概率))
然而第二个命令给了错误:
未定义的MATLAB函数的c: \ Program Files \ \ R2019b \ MATLAB工具箱\ \ specgraph \直方图。m为输入参数的类型的“双”。
但这正是标准的Matlab函数“直方图”预计? !做一个
哪一个柱状图
事实上返回
C:\Program Files\MATLAB\R2019b\toolbox\matlab\specgraph\ histogram.m
这是最新的文件(通过修改日期)从几个的名字(不幸的是)存在于我的Matlab文件夹。我相信这
应该
是标准的Matlab函数“直方图”。
如果另一方面在上面的例子中,我使用“嘘”而不是“直方图”,我得到我希望的标量值熵。然而,我知道“嘘”是不可取的,尤其是因为不能指定规范化类型。
所以,我的问题是:使用“嘘”计算概率好,或者我应该试试别的东西能够使用“直方图”呢?
13个评论
z8080
2021年9月9日
的输出是:
1函数h =直方图(变长度输入宗量)
2%直方图直方图的阴谋。
3X %直方图(X)块的直方图直方图使用自动装箱
4%算法返回垃圾箱与统一的宽度,选择覆盖
5%的元素X和揭示底层的形状分布。
你的直觉是对的,我做了最后一个变量不叫直方图在某种程度上在我的工作区。我删除,但仍示例代码行为古怪。现在是直方图选项,返回标量值预期,
h1 =直方图(X,“归一化”,“概率”);
概率= h1.Values;
熵=总和(概率。* log2(概率))
熵=
1.0409
而南嘘输出:
h1 =嘘(X);
概率= h1;
熵=总和(概率。* log2(概率))
熵=
南
z8080
2021年9月9日
编辑:z8080
2021年9月9日
通过“项目计数为0”你的意思是物品的概率向量
等于
0 ?
事实上,出于某种原因,我得到的所有概率向量包括至少一个0,但是相应的熵只对那些南0 mid-vector而不是当0结束时(由于填充在创建矩阵行各种长度)。这不是明显的输入信号导致这情况。
比如这段代码:
信号=(2.06623794644167,1.90137810157315,5.79024624899804,-10.0872171266770,3.72029696914678,1.88888495632052,-0.899652931772044,-1.01593746059118,6.02304846348934,-1.47602178714163,-1.26585426828863,-1.23193945906322,-1.58972503058801,-1.19316666394375,南南南南南南南)
% (isnan信号(信号))= [];
h1 =直方图(信号,“归一化”,“概率”);
概率= h1.Values
熵=总和(概率。* log2(概率))%这返回NaN
信号=(-6.30156202700424,2.31276368504634,2.53575767657180,3.85380766080873,-0.788693245197791,-3.14860106509044,5.94561552053542,-4.88433510447800,-0.536192076206886,4.93030202134006,-4.09979662991061,-0.597866984143998,-1.21151323711087,4.31812745523269,-1.74917050858314,-1.59171474633157,-0.845918488184140,南南,南南)
% (isnan信号(信号))= [];
h1 =直方图(信号,“归一化”,“概率”);
概率= h1.Values
熵=总和(概率。* log2(概率))这返回一个non-NaN % !
返回:
信号=
列1到17
2.0662 1.9014 5.7902 -10.0872 3.7203 1.8889 -0.8997 -1.0159 6.0230 -1.4760 -1.2659 -1.2319 -1.5897 -1.1932南南南
列18 - 21
南南南南
概率=
0.3333 0.1905 0.0952 0.0476 0
熵=
南
信号=
列1到17
-6.3016 2.3128 2.5358 3.8538 -0.7887 -3.1486 5.9456 -4.8843 -0.5362 4.9303 -4.0998 -0.5979 -1.2115 4.3181 -1.7492 -1.5917 -0.8459
列18 - 21
南南南南
概率=
0.0476 0.4762 0.2381 0.0476
熵=
1.4210
把nan从信号向量本身没有区别。
因此,我的问题:
1)我不明白为什么一个0中间导致南熵,但最后一个0是可以接受的。
2)将它实际上是正确的手动删除这些中路0和计算熵的兴味的概率向量?
Bjorn Gustavsson
2021年9月9日
编辑:Bjorn Gustavsson
2021年9月9日
这是零
概率
导致
南
s -你得到的形式0 * entropy-calculation日志(0),默认
南。
请注意,没有零
概率
向量在你的第二个例子。
Bjorn Gustavsson
2021年9月9日
它应该移除这些zero-probability-bins很简单:
聚合氯化铝=概率;
熵=总和(聚合氯化铝(聚合氯化铝(:)> 0)。* log2(聚合氯化铝(聚合氯化铝(:)> 0)))
沃尔特·罗伯森
2021年9月9日
你有一个有限的样本分布,你不指定本边缘或垃圾箱的数量。
在这种情况下,柱状图()是记录使用统一的数据创建垃圾箱宽度表示直方图的形状。然而,没有文档所使用的算法选择本宽度(箱),每分钟和相关的代码是在一个文件所以我们不能看它。
所以你让直方图选择统一的箱子在你有限的分布的数据,使用一个未知的算法选择本宽度,和一些垃圾箱零计数。
信谊N积极
p = 1/10;
打= 1/100;
解决(n = (1 - p) ^ n = =打)
n =
vpa (n)
ans =
43.708690653565665125154703017494
这种计算,如果你有一本有10%的概率,你会超过43个样本的概率下降到少于1/100之前本是空的。所以,有有限的样本,概率发生。
沃尔特·罗伯森
2021年9月10日
根据你的知识分布,它是有意义的询问,并采取马克斯(1项)来代替一个名义冲击对于每一个本,然后计算概率,adjusted_counts。/总和(adjusted_counts)。
样品越少,越扭曲的概率;样本越多,你就越有可能需要它。
但我推荐自己找出的比特数
在某种程度上
否则你将继续其非法的方法选择的摆布垃圾箱的数量。
答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。