Advertisement

互信息MATLAB代码实现。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
该函数 MI(a, b) 用于计算 a 和 b 在重叠区域内的互信息。它首先确定 a 和 b 的大小,并初始化一个 256x256 的直方图数组 hab,以及两个长度为 256 的零向量 ha 和 hb。接下来,函数对 a 和 b 进行归一化处理,以确保其值范围在 0 到 1 之间。如果 a 的值范围不连续,则将其缩放到 [0, 1] 范围内;同理,如果 b 的值范围不连续,则将其缩放到 [0, 1] 范围内。然后,该函数通过嵌套循环统计 a 和 b 的直方图,并将结果存储在 hab 中。具体来说,对于 a 和 b 中的每一个像素 (i, j),将 hab(i, j) 加一,ha(i) 加一,hb(j) 加一。最后,该函数计算联合直方图 hab 的和 hsum,并根据 p = hab/hsum 计算联合概率 p。利用 p 计算联合熵 Hab、a 图的熵 Ha 和 b 图的熵 Hb。互信息 mi 定义为 Ha + Hb - Hab。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 平均MATLAB:平均
    优质
    本文介绍了平均互信息的概念及其在信号处理和图像处理中的应用,并详细说明了如何使用MATLAB进行计算与仿真。通过实例代码帮助读者掌握其实现方法,适用于相关领域的研究人员和技术人员学习参考。 快速实现平均互信息。用法:[v,lag]=ami(x,y,lag),计算可能存在滞后的情况下x和y之间的相互平均信息。 - v表示平均互信息值; - x与y为时间序列(列向量); - 滞后是时间滞后的向量,当滞后大于0时V中的峰值意味着y领先于x。v的大小反映了相对于如何对x或y进行内部分箱而言,x和y有多少位需要表示。 为了获得最佳分箱效果,在运行之前将x和y转换为百分位数。请参阅Matlab中心关于boxpdf的相关资料。 Aslak Grinsted, 2006年2月
  • 概率论与论中的:边际及条件Matlab
    优质
    本项目提供概率论与信息论中互信息、边际互信息和条件互信息的计算方法,并以Matlab代码形式实现,便于研究和应用。 互信息的定义可以在维基百科上找到:对于边际互信息来说: \[ I(A,B) = \sum_{A} \sum_{B} P(A, B) \log\left[\frac{P(A, B)}{P(A)P(B)}\right] \] 而对于条件互信息,我们有: \[ I(A,B|C) = \sum_{A} \sum_{B} P(A, B | C) \log\left[\frac{P(A, B | C)}{P(A | C)P(B | C)}\right] \] 对于互信息矩阵而言,它保存所有 \(I(A,B)\) 的值。为了帮助理解这些概念,我们提供了一个简单的例子,请参考“ControlCentor.m”。如果有任何疑问,欢迎提问。
  • 关于熵的MATLAB.rar_熵_MATLAB熵_联合熵_
    优质
    该资源包含一系列用于计算互信息熵、联合熵及条件熵的MATLAB代码。适用于研究和工程应用中涉及的信息理论分析,提供了一个便捷的数据处理工具包。 实现互信息程序化可以自动化地进行互信息熵计算和联合熵计算,无需手动操作,从而更加方便快捷。
  • MATLAB中的
    优质
    本段落提供MATLAB环境下计算互信息的源代码,适用于研究及工程应用中分析变量间的统计依赖关系。 计算两幅图像的互信息和联合熵。 该函数接收两个图像并返回它们之间的互信息和联合熵。为了实现此功能,请下载joint_histogram.m文件(可在作者的资源库中找到)。 由Amir Pasha Mahmoudzadeh编写,赖特州立大学生物医学成像实验室。
  • MATLAB中的
    优质
    这段简介可以描述为:MATLAB中的互信息源代码提供了一套用于计算两个随机变量之间统计依赖性的高效工具和函数,适用于信号处理、图像分析及机器学习等领域的研究与开发。 function mi = MI(a,b) % 计算a和b在重叠部分的互信息(Mutual Information, MI) [Ma,Na] = size(a); [Mb,Nb] = size(b); M=min(Ma,Mb); N=min(Na,Nb); % 初始化直方图数组 hab = zeros(256,256); ha = zeros(1,256); hb = zeros(1,256); % 归一化处理 if max(max(a))~=min(min(a)) a = (a-min(min(a)))/(max(max(a))-min(min(a))); else a = zeros(M,N); end if max(max(b))-min(min(b)) b = (b-min(min(b)))/(max(max(b))-min(min(b))); else b = zeros(M,N); end a = double(int16(a*255))+1; b = double(int16(b*255))+1; % 统计直方图 for i=1:M for j=1:N indexx = a(i,j); indexy = b(i,j) ; hab(indexx,indexy) = hab(indexx,indexy)+1; % 联合直方图 ha(indexx) = ha(indexx)+1; % a图直方图 hb(indexy) = hb(indexy)+1; % b图直方图 end end % 计算联合信息熵 hsum = sum(sum(hab)); index = find(hab~=0); p = hab/hsum; Hab = sum(-log(p(index)).*(p(index))); % 计算a图的信息熵 hsum = sum(ha); index = find(ha~=0); p = ha/hsum; Ha = -sum(log(p(index)).*p(index)); % 计算b图信息熵 hsum = sum(hb); index = find(hb~=0); p = hb/hsum; Hb = -sum(log(p(index)).*p(index)); % 计算a和b的互信息 mi = Ha+Hb-Hab; %计算归一化互信息(注释掉了,原文中未给出具体公式) % mi = hab/(Ha+Hb);
  • MI.rar_MI_matlab 计算__ matlab
    优质
    本资源提供MATLAB环境下计算互信息的工具箱,适用于信号处理与机器学习领域中变量间依赖关系分析,方便科研人员和学生快速上手。 互信息:计算两幅图像之间的互信息。
  • 熵与
    优质
    本项目探讨了信息熵和互信息的概念及其在数据编码中的应用,通过理论分析与实践编程相结合的方式,旨在提高数据压缩效率及信息安全。 此代码可用于计算信息熵及互信息,在实际应用中解决了互信息难以直接求解的问题。该代码在MATLAB环境中可以正常运行。
  • Matlab中的计算-Mutual-information-code:用于计算Matlab编写
    优质
    这段代码是为使用Matlab编程语言计算两个随机变量之间的互信息而设计的。该项目提供了一个便捷的方法来评估数据集间的相互依赖性,适用于各种数据分析和机器学习场景。 互信息计算的Matlab代码用于衡量一个随机变量提供给另一个变量的信息量。它是无单位的度量,并以比特为单位表示,在已知另一随机变量的情况下量化不确定性的减少程度。高相互信息表明不确定性显著降低;低相互信息则意味着减少幅度很小;两个随机变量之间的互信息为零时,说明这两个变量是独立的。