本篇文章给大家谈谈信息熵matlab,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
p = imhist(Y(:));
p(p==0) = [ ];
p = p ./ numel(Y);
H1 = -sum(p.*log2(p));
在这里Y是指的输出图像。H指的是信息熵
(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第
一块,10~20的第二块,以此类推。这之前需要对x(n)做一些归一化处理
(2)统计每一块的数据个数,并求出相应的概率
(3)用信息熵公式求解
以上求解方法获得的虽然是近似的信息熵,但是一般认为,这么做是没有问题的
求一维序列的信息熵的matlab程序代码如下:(已写成调用的函数形式)
测试程序:
fs=12000;
N=12000;
T=1/fs;
t=(0:N-1)*T;
ff=104;
sig=0.5*(1+sin(2*pi*ff*t)).*sin(2*pi*3000*t)+rand(1,length(t));
Hx=yyshang(sig,10)
题主给出的用matlab求振动信号信息熵的代码有下列几个问题:
1、shannon=-sum(x.*log2(x)),该代码不能写在for循环中,因为sum是求和命令,其要求x为数值向量
2、循环语句中 x=b(i)/sum(b) ,该代码最后的得到结果是一个x数值,并没有得到一组数值向量,所以该循环应这样来写
for i=1:3072
x(ⅰ)=b(i)/sum(b);
end
3、为了帮你理解,你可运行下列代码,就可以发现,他们的区别。
A=1:10;
for i=1:10,x=A(i)/sum(A);end,x
for i=1:10,x(i)=A(i)/sum(A);end,x
信息熵matlab的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、信息熵matlab的信息别忘了在本站进行查找喔。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签: #信息熵matlab
相关文章