uint32型行向量的Matlab熵计算

uint32型行向量的Matlab熵计算,matlab,entropy,uint32,Matlab,Entropy,Uint32,我需要计算行向量的熵。但问题是我的行向量是uint32类型,Matlab给出了一个错误,即熵()函数不支持这种类型 我尝试将uint32转换为uint16,但这增加了行向量的大小,返回的结果是0 请让我知道我该怎么做 谢谢 如果你的向量是二进制的,你可以计算熵H如下(假设vect是你的原始向量) 来源:如果您将uint32向量转换为双精度向量,它应该可以工作 a = randi([0 1],1,100); % original vector b = uint32(a); % convert a

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

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

请让我知道我该怎么做


谢谢

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


来源:

如果您将uint32向量转换为双精度向量,它应该可以工作

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应该是相同的

没有相同的结果。martix的大小只会增加。我想指出的一点是,这个行向量只包含0或1的值。下标索引必须是实正整数或逻辑数。
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)