独⽴向量信号互信息计算——Matlab实现
引⾔
信息熵公式:
炸鱿鱼圈其中I(X)表⽰X的信息量
p(xi)是xi发⽣的概率英⽂⾥⾯叫做probability mass function,⼀个随机产⽣的事件所包含的信息本体数量,只与事件发⽣的机率相关。事件发⽣的机率越低,在事件真的发⽣时,接收到的信息中,包含的信息本体越⼤。含义是概率为 0 的事件对应的信息⼤, 反之信息量少.取对数的原因是使得乘积变为求和。两个独⽴事件x,y :p(x,y)=p(x)*p(y),I(x,y)=I(x)+I(y)
信息熵即为信息量的数学期望。党的知识点
互信息为:
敬畏的反义词平均互信息为互信息的数学期望:
从公式可以推出:
这样就可以求出两个信号X,Y的互信息了,唯⼀需要求的就是两个信号的各⾃的pmf以及联合pmf,离散的pmf可以⽤直⽅图法求出,很直观很简单,就是将数据分成n等分,累计落⼊区间的数量即为信号⾃⼰的pmf,联合的pmf呢,同样的记录相同时刻的(xi,yi)落⼊两个数据n*n等分⽅格中的数量即为联合的pmf。
1. 编码实现
%计算两列向量之间的互信息
%u1:向量1
%u2:向量2
正方体体积公式
%wind_size:划分的等份
function mi = calc_mi(u1, u2, wind_size)
x = [u1, u2];
n = wind_size;
[xrow, xcol] = size(x);
bin = zeros(xrow,xcol);
pmf = zeros(n, 2);
大禹称王>蒸大米饭for i = 1:2
minx = min(x(:,i));
maxx = max(x(:,i));
binwidth = (maxx - minx) / n;
edges = minx + binwidth*(0:n);
histcEdges = [-Inf edges(2:end-1) Inf];
[occur,bin(:,i)] = histc(x(:,i),histcEdges,1);
pmf(:,i) = occur(1:n)./xrow;
end
jointOccur = accumarray(bin,1,[n,n]);
批改网官网
jointPmf = jointOccur./xrow;
Hx = -(pmf(:,1))'*log2(pmf(:,1)+eps);
Hy = -(pmf(:,2))'*log2(pmf(:,2)+eps);
Hxy = -(jointPmf(:))'*log2(jointPmf(:)+eps);
MI = Hx+Hy-Hxy;
日工资怎么算
mi = MI/sqrt(Hx*Hy);