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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
互信息的定义 ! p2 |  E5 l4 g6 ]. R4 w
正式地,两个离散随机变量 X 和 Y 的互信息可以定义为:8 J8 q! b+ d) K
! A/ ~) C- s' [
其中 p(x,y) 是 X 和 Y 的联合概率分布函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率分布函数。4 q5 A! _! B& @  \8 e

, |) \4 p- r1 ^其中 p(x,y) 当前是 X 和 Y 的联合概率密度函数,而p(x)和p(y)分别是 X 和 Y 的边缘概率密度函数。
2 s$ M1 B! Z& o  n' T& D
$ `) v. ~$ n' Z: \. C% d* _互信息量I(xi;yj)在联合概率空间P(XY)中的统计平均值。 平均互信息I(X;Y)克服了互信息量I(xi;yj)的随机性,成为一个确定的量。如果对数以 2 为基底,互信息的单位是bit。) ^# O! q* k# y

3 {5 _  |4 r  c直观上,互信息度量 X 和 Y 共享的信息:它度量知道这两个变量其中一个,对另一个不确定度减少的程度。例如,如果 X 和 Y 相互独立,则知道 X 不对 Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X 是 Y 的一个确定性函数,且 Y 也是 X 的一个确定性函数,那么传递的所有信息被 X 和 Y 共享:知道 X 决定 Y 的值,反之亦然。因此,在此情形互信息与 Y(或 X)单独包含的不确定度相同,称作 Y(或 X)的熵。而且,这个互信息与 X 的熵和 Y 的熵相同。(这种情形的一个非常特殊的情况是当 X 和 Y 为相同随机变量时。)
9 Z# o5 p9 n, _. ^# v5 S+ Y6 _" C; E8 v: s
此外,互信息是非负的(即 I(X;Y) ≥ 0; 见下文),而且是对称的(即 I(X;Y) = I(Y;X))。
; ]4 e5 q. J: w# @1 Y& E  T6 n3 f& y9 W0 y
通用MATLAB代码 ( y* P! c4 t7 d+ E' A/ T7 B+ Z
主函数main.m% _* f, {. Z3 V9 j7 q
3 u% f( z7 m% k# Z: c' G% h
clc
. h) `1 O& v; F6 k0 {8 Vu1 = rand(4,1);
. o6 E! v  O8 y9 p6 ?3 `u2 = [2;32;6666;5];8 g9 Q, Y( h& t) Y$ v9 n8 k
wind_size = size(u1,1);
% D* k+ s0 A  n# smi = calmi(u1, u2, wind_size);
7 w; |# ?$ q' ^6 @6 u9 d" l3 w4 D& I, A
calmi.m& \( J1 p1 m0 p+ `1 S% ?; d  k

! p% h- o1 x0 P* d# q%计算两列向量之间的互信息0 H  G6 T+ i. E# F5 j: {' L
%u1:输入计算的向量1# T4 G/ F+ `+ p2 ^+ v
%u2:输入计算的向量2
9 K$ M; F2 T) `  x0 n2 k9 k%wind_size:向量的长度$ j* N( e3 F- S6 [0 O4 ]
function mi = calmi(u1, u2, wind_size)% |. m4 U2 G& @4 f( F
x = [u1, u2];
4 T! g% v+ A( y' r5 Y8 c( En = wind_size;1 l$ J: w2 A/ q8 A
[xrow, xcol] = size(x);
9 X' ^' c# A" v, z  A1 m# g+ nbin = zeros(xrow,xcol);  _- K4 t1 Y) \& ~/ \6 @; C" j2 }  w
pmf = zeros(n, 2);+ r" ], \# a8 a/ n) s
for i = 1:2
9 [! \% e" ~  M. |0 R& t: _    minx = min(x(:,i));
- d+ h( p) y! n. @" Z* M    maxx = max(x(:,i));
9 @3 q% s' U6 \  T, S+ q    binwidth = (maxx - minx) / n;& z! D9 s: C( D$ c- _
    edges = minx + binwidth*(0:n);$ s1 h8 n0 ~) o/ q
    histcEdges = [-Inf edges(2:end-1) Inf];
3 w1 ]6 O! o8 R( N& W    [occur,bin(:,i)] = histc(x(:,i),histcEdges,1); %通过直方图方式计算单个向量的直方图分布  E4 x- Y% k% D, C6 F
    pmf(:,i) = occur(1:n)./xrow;
6 o. c2 T7 f3 c2 @+ G+ hend
% T" c$ S$ v) q# d& p%计算u1和u2的联合概率密度3 t6 M3 _5 c$ F" w- D
jointOccur = accumarray(bin,1,[n,n]);  %(xi,yi)两个数据同时落入n*n等分方格中的数量即为联合概率密度
0 h9 V$ k6 p% gjointPmf = jointOccur./xrow;
0 W8 x6 o4 R# o9 HHx = -(pmf(:,1))'*log2(pmf(:,1)+eps);
7 K, Q6 {* h' I3 k' THy = -(pmf(:,2))'*log2(pmf(:,2)+eps);
9 U* V3 ^1 f: U! i5 RHxy = -(jointPmf(: ))'*log2(jointPmf(: )+eps);: c$ |' s' K4 v, b% r$ ^6 G  t
MI = Hx+Hy-Hxy;
+ b: j  s- l2 r2 Q" omi = MI/sqrt(Hx*Hy);( C5 t8 b4 F, y8 p4 ?
+ m' {$ A3 x9 S- i2 b

1 b. L# ^( `9 `. O$ B7 L1 L$ k# g3 E+ X

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 07:38 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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