我需要计算行向量的熵。但问题是我的行向量是 uint32 类型,Matlab 给出的错误是 entropy() 函数不支持这种类型。
我尝试将 uint32 转换为 uint16 但这会增加行向量的大小并返回结果 0!
请让我知道我该怎么做。
谢谢!
如果将 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 应该相同
如果你的向量是二进制的,你可以计算熵 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);