数学公式什么的没有。
做实验计算联合熵需要使用概率密度。
函数accumarray不是太行,方阵中很多的0浪费内存,我可没有几百G的内存ε=(´ο`*)))唉。
Matlab代码实现
function tong1joint = calmi(u1, u2, wind_size)
x = [u1, u2]; //% x是2个列向量组成的矩阵
n = wind_size; // % 列向量长度
xmax = max(x(:,1));
tongwidth = xmax;
tong1 = zeros(2,tongwidth); // % 这算是桶吧
for i = 1:n
if x(i,2) == 1
tong1(1,x(i,1)) = tong1(1,x(i,1)) +1;
else
tong1(2,x(i,1)) = tong1(2,x(i,1)) +1;
end
end
tong1pmf = tong1/n; //% u1和u2的联合概率密度
tong1joint = (tong1pmf(:))'*log2((tong1pmf(:))+eps); // % 联合熵
实例
没有实例。