互信息是啥?起到啥作用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互信息是啥?起到啥作用?相关的知识,希望对你有一定的参考价值。
参考技术A 简单介绍互信息是信息论里一种有用的 信息度量 ,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。简单说,就是两个事件集合之间的相关性。
比如,在图像处理中,常常需要比较两幅图像的相似度,互信息就是其中一种较为常用的方法,其核心思想就是熵。
熵
在互信息中有用到熵的概念,这里我们再简单介绍一下熵。
熵最初是热力学中表征物质状态的参量。其物理意义就是体系的混乱程度。任何一种能量在空间中分布的越均匀,熵越大。当完全均匀分布时,这个系统的熵就达到了最大值,也就是说此时的系统越混乱。
对于事件来说,当所有状态概率相等的时候熵最大,这个时候系统对取什么态没有偏向性,所以混乱度最大。
在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。(这里指的是信息量)
信息熵
在我们处理信息的过程中,我们知道的事件确定性越大,所获取到的信息就会越少。比如,我们知道某件事情一定会发生,那么我们就不会接收到其它信息了。
所以我们获取信息内容的度量,是依赖于概率分布 P(x) ,因此我们要找到的信息量公式 h(x) 是需要随着概率单调递减的函数。所以这里我们选择了
那么对于同一个事件,如果有多种可能,比如下图这样:
那么就可以用来描述信息熵了
上面所提到的底数都没有设置,可以为 2 e 10 ,只是表征一个度量,并没有固定死要求。
互信息的计算公式在信息熵层面可以理解为:
其中的 H(A,B)为联合熵。
相对熵
相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布P Q ,我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。下面是维基百科对相对熵的描述
In the context of machine learning, DKL(P‖Q) is often called the information gain achieved if P is used instead of Q.
n为事件的所有可能性。 KL值越小,表示q分布和p分布越接近。
对上式进行变形:
交叉熵:交叉熵实际上是更广泛的相对熵的特殊形式
互信息
互信息实际上是更广泛的相对熵的特殊形式,如果(x,y)~ p(x,y) , X ,Y 之间的互信息 I(X;Y) 定义为:
使用概率的加和规则和乘积规则,我们看到互信息和条件熵之间的关系为
平均互信息
平均互信息表征了两个集合之间的关联程度。具有以下物理含义:
平均互信息 = 先验的平均不确定性 – 观察到 Y后 X保留的平均不确定性。
平均互信息 = 接收到Y后X 的平均不确定性消除的程度。
平均互信息 = 接收到Y 后获取到关于X 的平均信息量。
在联合集(X,Y)上,把互信息量 I(a;b) 的概率加权平均值定义为平均互信息量。其定义式为:
单片机unsigned char code table[]是啥作用?
如:uchar code table[]0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;
之后我要怎么调用第1个 或者第2第3个?
code的作用是告诉单片机,定义的数据要放在ROM(程序存储区)里面。
单片机code作用其实是相当于汇编里面的寻址MOVX,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。
锁存器就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。74hc573就是锁存器,锁存引脚高电平表示直通状态,为低电平表示锁存状态,可以通过控制锁存已经,控制74hc573后端数据。
扩展资料:
单片机函数是一个自我包含的完成一定相关功能的执行代码段。通常C语言的编译器会自带标准的函数库,这些都是一些常用的函数。标准函数已由编译器软件商编写定义,使用者直接调用就可以。
但是标准的函数不足以满足使用者的特殊要求,因此C语言允许使用者根据需要编写特定功能的函数,要调用必须要先对其进行定义。
参考技术A 你这是数码管显示吧,显示1-f一共16个字符数吧。首先unsigned char code table[]的意思是定义了一个无符号的字符数组放在code这个程序存储器即单片机rom里面。放在code的好出是节省单片机的ram。然后你要依次显示出来这16个数字,你就从数组里面取这16个数字,定义一个num,用for循环叫,num<16,num++,然后就能显示了,比如说你用P0这个单片机的i/o口,那么就叫P0=temp[num]就可以了,num一直++就一直往下取值了,让后就能依次显示出来,不过要有延时函数,不然取值太快变得太快看不清呢,。而且上面说的这个for循环取值显示也要放在1个while(1)死循环里面里面才能不断循环显示,不然执行完一次循环显示后就完啦。 略略略略略,我是宇宙最帅 参考技术B code的作用是告诉单片机,定义的数据要放在ROM(程序存储区)里面,其实是相当于汇编里面的寻址MOVX,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。 参考技术C 这就是无符号字符型表,存储在程序存储器(rom)中,不占用随机存储器(ram),这样用是因为令一些不用修改的常值不占用宝贵的ram。若将第一个值赋给i,就写i=table[0];,和普通的表的用法是一样的。本回答被提问者和网友采纳 参考技术D 定义一个uchar型的数组,用第一个就是table[0],第2个就是table[1],以此类推。
以上是关于互信息是啥?起到啥作用?的主要内容,如果未能解决你的问题,请参考以下文章