找回密码
 注册
关于网站域名变更的通知
查看: 677|回复: 1
打印 上一主题 下一主题

列向量互信息计算通用MATLAB代码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-15 13:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
互信息的定义
( `: f- L3 I, }4 X$ F& P- b正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:
. _9 c( R% M, z: q, F. K& W% t& ?& |
其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。
! A7 d2 M5 Y4 @/ h% S
  U; e/ r+ \6 P' d( O& V0 E其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。
+ M# W/ }1 b. z7 C* H# u* r0 o/ }' z% w
互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。* c1 b( t' S9 e2 a9 w
  h% D& p3 u5 ~
直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)
; f: k  }7 X- @
1 e0 ?) b9 ~, i7 C" m- F. Y此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。* n* l  J% W8 |+ ~* t1 H! F

) t. \3 q% S; q# [6 g2 C通用MATLAB代码
5 _" a" ~' G. o! j' G' q" A主函数main.m
9 a) v$ Y# g9 N% a
* K+ q  ^2 ~2 ?1 |# rclc8 t: H% Q  o+ y- T
u1 = rand(4,1);
0 e+ r* L  e+ V8 B, ~u2 = [2;32;6666;5];" [+ u. I" x: C2 \! _; s; v9 e
wind_size = size(u1,1);' h8 |+ O  T+ D* Q% \
mi = calmi(u1, u2, wind_size);
+ U  p  i  l2 Y% b/ E9 F
* K! T  I9 F4 F% K/ Acalmi.m
/ e  g3 |* B9 E. P8 ^  X# H; I* c: t) L+ Z5 s6 x# v
%计算两列向量之间的互信息
: p* G9 l$ e1 J7 I) k" p! I%u1:输入计算的向量1; H; g* ]/ B- H
%u2:输入计算的向量2
# F9 |; m8 r) J) G5 K; y) R%wind_size:向量的长度6 c9 c& X4 F) w# }# I) H
function mi = calmi(u1, u2, wind_size)
/ D! ?$ @1 P4 i7 u, i: v/ sx = [u1, u2];# T: m& x5 N! {6 a  v
n = wind_size;
6 N  j- H9 @$ e  p[xrow, xcol] = size(x);
+ m! C% c. W, `# m' S: Nbin = zeros(xrow,xcol);
4 o2 q# X, f, mpmf = zeros(n, 2);; N2 }8 Z0 A- R. E  [
for i = 1:22 N& c' _/ f3 t$ {. P
    minx = min(x(:,i));: ?! r3 }* T, w+ j* }9 e
    maxx = max(x(:,i));
9 B. J! i, H! a+ [% S& S# q    binwidth = (maxx - minx) / n;  U6 ^0 D9 q* ~1 X- V
    edges = minx + binwidth*(0:n);
% E; y! S6 K2 z- E  b    histcEdges = [-Inf edges(2:end-1) Inf];
. w1 O) Z* t5 \( G; d2 N# L3 q& j    [occur,bin(:,i)] = histc(x(:,i),histcEdges,1); %通过直方图方式计算单个向量的直方图分布, ^" ~6 G1 [! y
    pmf(:,i) = occur(1:n)./xrow;
; ?' y; \' X5 ]  yend
/ @& |5 \: K. a; R" ^4 s%计算u1和u2的联合概率密度
; i, c9 x+ p0 ]& qjointOccur = accumarray(bin,1,[n,n]);  %(xi,yi)两个数据同时落入n*n等分方格中的数量即为联合概率密度
* t" s) h5 z3 h4 B4 G; pjointPmf = jointOccur./xrow;
9 t) q8 d8 ~! y: i4 C& O. vHx = -(pmf(:,1))'*log2(pmf(:,1)+eps);( J8 F' h7 d0 ~6 P/ C& R6 D" ]
Hy = -(pmf(:,2))'*log2(pmf(:,2)+eps);
5 L+ \4 H5 j( i, m( `/ y' V, SHxy = -(jointPmf(: ))'*log2(jointPmf(: )+eps);8 j5 L2 ]& F& a8 ]. C9 A4 o$ w
MI = Hx+Hy-Hxy;5 f0 o4 t) s  D$ k, n
mi = MI/sqrt(Hx*Hy);: {# Q  F5 |2 b5 {2 S

4 B0 n0 w2 z: M6 |
1 A$ A/ L0 z! h% s
+ ?4 k/ o+ _" I$ Z1 j6 D% O& C

该用户从未签到

2#
发表于 2020-5-15 15:16 | 只看该作者
列向量互信息计算通用MATLAB代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-6 02:09 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表