Matlab中uint32型行向量的熵计算

时间:2014-07-11 11:33:50

标签: matlab entropy uint32

我需要计算行向量的熵。但问题是我的行向量是uint32类型而Matlab给出了一个错误,即熵()函数不支持这种类型。

我尝试将uint32转换为uint16,但这增加了行向量的大小并返回0的结果!

请让我知道我应该怎么做。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你将uint32向量转换为double的向量,它应该可以工作

a = randi([0 1],1,100); % original vector

b = uint32(a); % convert a into a uint32 vector
b = uint16(b); % make b a uint16 vector
d = double(b); % convert b into double vector

ent_a = entropy(a)
ent_b = entropy(b)
ent_d = entropy(d)

ent_a和ent_d应该是相同的

答案 1 :(得分:0)

如果你的矢量是二进制的,你可以如下计算熵H(假设vect是你的原始矢量)

p=sum(vect==1)/length(vect); %the probability of having a 1 in your vector
H=-p*log2(p)-(1-p)*log2(1-p);

来源:http://en.wikipedia.org/wiki/Binary_entropy_function