最新信息熵的matlab程序实例资料
经济预测与决策技术及MATLAB实现第14章 熵权法与逼近理想解排序法

0.595
0.43
40443
碳排放强度 (吨/万元)
1338.39 1285.47 1192.46 1047.06 984.61 928.95 779.64 730.29 689.98 680.55
(1)输入指标数据,确定对象个数和指标个数 %压力因素(P) clear X=[…]; %数据见表14-2 [m,n]=size(X); % m为对象个数,n为指标个数 (2)初始数据矩阵标准化 %全是负向指标 X1=[]; for j=1:n X2=(max(X(:,j))-X(:,j))./(max(X(:,j))-min(X(:,j))); X1=[X1,X2]; end
14.1 熵权法
14.1.2 熵的计算步骤
熵权法是通过计算指标的信息熵,利用指标的差异程度 来度量已知数据中包含的有效信息和指标权重。指标的 离散程度越大,其熵值越小,表明其信息的有效价值越 大,该指标在综合评价中对目标的影响也就越大。其基 本计算步骤如下:
14.1.3 熵权的性质与意义
1. 熵权的性质 (1)若某列元素数值都相同,则熵最大值为1,熵权为0。 表明在某指标上各评价对象的数值相同时,该指标未包含任 何有价值的信息。 (2)若某列元素数值相差越大,则熵值就越小,熵权就越 大。表明该指标包含有价值的信息。 (3)若指标的熵值越大,则其熵权越小,表明该指标越不 重要。
4. 求第二指标层影响因素指标的权重
年份
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
城镇登记失业率 (%) 3.3 3.3 3.2 3.5 3.4 3.4 3.4 3.3 3.2 3.3
城镇恩格尔系数 (%) 33.69 32.02 32.90 33.61 32.92 32.06 33.15 32.97 29.18 28.92
熵权法matlab实例

熵权法matlab实例熵权法是一种常用的多指标综合评价方法,它可以将多个指标的权重进行量化,并且可以避免主观因素对权重的影响。
在实际应用中,熵权法可以用来评价企业的综合实力、产品的质量、城市的发展水平等。
下面我们以matlab为例,介绍如何使用熵权法进行多指标综合评价。
1. 数据准备首先,我们需要准备好要评价的多个指标的数据。
这些数据可以来自于实际调查或者是已有的统计数据。
以评价企业综合实力为例,我们可以选择以下几个指标:- 资产总额- 净利润- 员工数量- 税收贡献我们将这些指标的数据保存在一个excel文件中,每个指标占据一列,每个企业占据一行。
2. 计算熵值接下来,我们需要计算每个指标的熵值。
熵值是用来衡量指标数据分布的离散程度的,熵值越大表示数据分布越离散,反之则表示数据分布越集中。
计算熵值的公式如下:$$E_i = -\frac{1}{ln(n)}\sum_{j=1}^{n}\frac{p_{ij}ln(p_{ij})}{ln(n)} $$其中,$E_i$表示第$i$个指标的熵值,$n$表示样本数,$p_{ij}$表示第$i$个指标在第$j$个样本中的占比。
我们可以使用matlab中的entropy函数来计算每个指标的熵值。
具体代码如下:```matlabdata = xlsread('data.xlsx'); % 读取数据[n, m] = size(data); % 获取数据的行数和列数E = zeros(1, m); % 初始化熵值向量for i = 1:mp = data(:, i) / sum(data(:, i)); % 计算占比E(i) = -sum(p .* log(p)) / log(n); % 计算熵值end```3. 计算权重接下来,我们需要根据每个指标的熵值计算其权重。
权重是用来衡量每个指标在综合评价中的重要程度的,熵值越小表示指标的重要程度越高。
《信息论》实验指导书—-应用MATLAB软件实现

《信息与编码理论》上机实验指导书———————应用MATLAB软件实现UPC通信工程系前言本实验系列是采用MATLAB软件,主要针对《信息论基础》课程中的相关内容进行的实验。
MATLAB是一完整的并可扩展的计算机环境,是一种进行科学和工程计算的交互式程序语言。
它的基本数据单元是不需要制定维数的矩阵,它可直接用于表达数学的算式和技术概念,解决同样的数值计算问题,使用MATLAB要比使用Basic、Fortran和C语言等提高效率许多倍。
MATLAB还是一种有利的教学工具,在大学的线性代数课程以及其它领域的高一级课程的教学中,已称为标准的教学工具。
该指导书共安排了4个实验,现就一些情况作简要说明:各实验要求学生在MATLAB系统上尽量独立完成,弄懂。
实验内容紧扣课程教学内容的各主要基本概念,希望同学们在完成每个实验后,对所学的内容起到巩固和加深理解的作用。
每个实验做完后必须交一份实验报告。
恳请各位实验老师和同学在实验中提出宝贵意见,以利于以后改进提高。
目录实验一离散信源及其信息测度 (3)实验二离散信道及其容量 (6)实验三无失真信源编码 (8)实验四有噪信道编码 (10)附录部分常用MATLAB命令 (12)实验一 离散信源及其信息测度一、[实验目的]离散无记忆信源是一种最简单且最重要的信源,可以用完备的离散型概率空间来描述。
本实验通过计算给定的信源的熵,加深对信源及其扩展信源的熵的概念的理解。
二、[实验环境]windows XP,MATLAB三、[实验原理]信源输出的各消息的自信息量的数学期望为信源的信息熵,表达式如下1()[()]()log ()qi i i H X E I xi p x p x ===-∑信源熵是信源的统计平均不确定性的描述,是概率函数()p x 的函数。
四、[实验内容]1、有条100字符英文信息,假定其中每字符从26个英文字母和1个空格中等概选取,那么每条信息提供的信息量为多少若将27个字符分为三类,9个出现概率占2/7,13个出现概率占4/7,5个出现占1/7,而每类中符号出现等概,求该字符信源的信息熵。
香农熵的matlab程序

香农熵的Matlab程序1. 引言香农熵(Shannon Entropy)是信息论中一个重要的概念,用于衡量一个随机变量的不确定性或者信息量。
在信息论和通信领域,香农熵被广泛应用于数据压缩、信号处理、密码学等方面。
本文将介绍如何使用Matlab编写程序来计算香农熵。
2. 算法原理香农熵的计算公式如下:其中,H表示香农熵,p(x)表示随机变量X取某个值x的概率。
根据该公式,我们需要计算每个可能取值的概率,并将其代入公式中求和,即可得到香农熵的值。
3. Matlab程序实现下面是一个简单的Matlab程序,用于计算给定随机变量的香农熵:function entropy = shannon_entropy(probabilities)entropy = 0;for i = 1:length(probabilities)if probabilities(i) ~= 0entropy = entropy - probabilities(i) * log2(probabilities(i));endendend以上程序定义了一个名为shannon_entropy的函数,该函数接受一个概率向量作为输入参数,并返回计算得到的香农熵。
程序的实现思路是遍历概率向量中的每个元素,如果该元素不为0,则将其代入香农熵的计算公式中进行计算,并累加到最终的结果中。
4. 使用示例为了演示程序的使用,我们将计算一个简单的示例。
假设有一个随机变量X,其可能取值为[1, 2, 3],对应的概率分别为[0.3, 0.5, 0.2]。
我们可以使用上述程序来计算该随机变量的香农熵。
probabilities = [0.3, 0.5, 0.2];entropy = shannon_entropy(probabilities);disp(['Entropy: ', num2str(entropy)]);运行上述代码,程序将输出以下结果:Entropy: 1.4854753这表明给定的随机变量X的香农熵为1.4854753。
附录 Matlab源程序

附录Matlab源程序附录A 信息熵% 函数说明:%% H=entropy(P,r) 为信息熵函数%% P为信源的概率矢量, r为进制数%% H为信息熵%%****************************** %function H=entropy(P,r)if (length(find(P<=0))~=0)error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,component do not add up to 1');endH=(sum(-P.*log2(P)))/(log2(r)+eps);附录B 离散无记忆信道容量的迭代计算% 信道容量C的迭代算法%% 函数说明:%% [CC,Paa]=ChannelCap(P,k) 为信道容量函数%% 变量说明:%% P:输入的正向转移概率矩阵,k:迭代计算精度%% CC:最佳信道容量,Paa:最佳输入概率矩阵%% Pa:初始输入概率矩阵,Pba:正向转移概率矩阵%% Pb:输出概率矩阵,Pab:反向转移概率矩阵%% C:初始信道容量,r:输入符号数,s:输出符号数%%************************************************** %function [CC,Paa]=ChannelCap(P,k)% 提示错误信息if (length(find(P<0)) ~=0)error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件endif (abs(sum(P')-1)>10e-10)error('Not a prob.vector,component do not add up to 1') % 判断是否符合概率和为1 end% 1)初始化Pa[r,s]=size(P);Pa=(1/(r+eps))*ones(1,r);sumrow=zeros(1,r);Pba=P;% 2)进行迭代计算n=0;C=0;CC=1;while abs(CC-C)>=kn=n+1;% (1)先求PbPb=zeros(1,s);for j=1:sfor i=1:rPb(j)=Pb(j)+Pa(i)*Pba(i,j);endend% (2)再求Pabsuma=zeros(1,s);for j=1:sfor i=1:rPab(j,i)=Pa(i)*Pba(i,j)/(Pb(j)+eps);suma(j)=suma(j)+Pa(i)*Pba(i,j)*log2((Pab(j,i)+eps)/(Pa(i)+eps));end% 3)求信道容量CC=sum(suma);% 4)求下一次Pa,即PaaL=zeros(1,r);sumaa=0;for i=1:rfor j=1:sL(i)=L(i)+Pba(i,j)*log(Pab(j,i)+eps);enda(i)=exp( L(i));endsumaa=sum(a);for i=1:rPaa(i)=a(i)/(sumaa+eps);end% 5)求下一次C,即CCCC=log2(sumaa);Pa=Paa;end% 打印输出结果s0='很好!输入正确,迭代结果如下:';s1='最佳输入概率分布Pa:';s2='信道容量C:';s3='迭代次数n:';s4='输入符号数r:';s5='输出符号数s:';s6='迭代计算精度k:';for i=1:rB{i}=i;enddisp(s0);disp(s1),disp(B),disp(Paa);disp(s4),disp(r);disp(s5),disp(s);disp(s2),disp(CC);disp(s6),disp(k);disp(s3),disp(n);附录C Shannon编码% 函数说明:% % [p,x]=array(P,X) 为按降序排序的函数% % P为信源的概率矢量,X为概率元素的下标矢量% % p为排序后返回的信源的概率矢量% % x为排序后返回的概率元素的下标矢量% %*******************************************% function [p,x]=array(P,X)P=[P;X];[l,n]=size(P);for i=1:nmax=P(1,i);maxN=i;MAX=P(:,i);for j=i:nif (max<P(1,j))MAX=P(:,j);max=P(1,j);maxN=j;endendif (maxN>1)if (i<n)for k=(maxN-1):-1:iP(:, k+1)=P(:,k);endendendP(:,i)=MAX;endp=P(1,:);x=P(2,:);% shannon编码生成器%% 函数说明:%% [W,L,q]=shannon(p) 为shannon编码函数%% p为信源的概率矢量,W为编码返回的码字%% L为编码返回的平均码字长度,q为编码效率%%*****************************************%function [W,L,q]=shannon(p)% 提示错误信息if (length(find(p<=0)) ~=0)error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件endif (abs(sum(p)-1)>10e-10)error('Not a prob.vector,component do not add up to 1') % 判断是否符合概率和为1 end% 1)排序n=length(p);x=1:n;[p,x]=array(p,x);% 2)计算代码组长度ll=ceil(-log2(p));% 3)计算累加概率PP(1)=0;n=length(p);for i=2:nP(i)=P(i-1)+p(i-1);end% 4)求得二进制代码组W% a)将十进制数转为二进制数for i=1:nfor j=1:l(i)temp(i,j)=floor(P(i)*2);P(i)=P(i)*2-temp(i,j);endend% b)给W赋ASCII码值,用于显示二进制代码组Wfor i=1:nfor j=1:l(i)if (temp(i,j)==0)W(i,j)=48;elseW(i,j)=49;endendendL=sum(p.*l); % 计算平均码字长度H=entropy(p,2); % 计算信源熵q=H/L; % 计算编码效率% 打印输出结果for i=1:nB{i}=i;end[n,m]=size(W);TEMP=32*ones(n,6);W=[W,TEMP];W=W';[n,m]=size(W);W=reshape(W,1,n*m);W=sprintf('%s', W);s0='很好!输入正确,编码结果如下:';s1='Shannon 编码所得码字W:';s2='Shannon 编码平均码字长度L:';s3='Shannon 编码的编码效率q:';disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);附录D Fano编码% 函数说明:% % [next_P,next_index,code_num]=compare(current_P,current_index) % % 为比较函数,主要用于信源符号的分组% % current_P为当前分组的信源的概率矢量%% current_index为当前分组的信源的下标%% next_P为返回的下次分组的信源的概率矢量 %% next_index为返回的下次分组的信源的下标%% code_num为返回的ASCII值 %%*********************************************************************% function [next_P,code_num,next_index]=compare(current_P,current_index);n=length(current_P);add(1)=current_P(1);% 1)求概率的依次累加和for i=2:nadd(i)=0;add(i)=add(i-1)+current_P(i);end% 2)求概率和最接近的两小组s=add(n);for i=1:ntemp(i)=abs(s-2*add(i));end[c,k]=min(temp);% 3)对分组的信源赋ASCII值if (current_index<=k)next_index=current_index;code_num=48;next_P=current_P(1:k);elsenext_index=current_index-k;code_num=49;next_P=current_P((k+1):n);end% fano编码生成器%% 函数说明:%% [W,L,q]=fano(P) 为fano编码函数%% P为信源的概率矢量,W为编码返回的码字%% L为编码返回的平均码字长度,q为编码效率%%*****************************************%function [W,L,q]=fano(P)% 提示错误信息if (length(find(P<=0)) ~=0)error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,component do not add up to 1') % 判断是否符合概率和为1 end% 1)排序n=length(P);x=1:n;[P,x]=array(P,x);% 2)将信源符号分组并得到对应的码字for i=1:ncurrent_index=i;j=1;current_P=P;while 1[next_P,code_num,next_index]=compare(current_P,current_index);current_index=next_index;current_P=next_P;W(i,j)=code_num;j=j+1;if (length(current_P)==1)break;endendl(i)=length(find(abs(W(i,:)) ~=0)); % 得到各码字的长度endL=sum(P.*l); % 计算平均码字长度H=entropy(P,2); % 计算信源熵q=H/L; % 计算编码效率% 打印输出结果for i=1:nB{i}=i;end[n,m]=size(W);TEMP=32*ones(n,5);W=[W,TEMP];W=W';[n,m]=size(W);W=reshape(W,1,n*m);W=sprintf('%s', W);s0='很好!输入正确,编码结果如下:';s1='Fano 编码所得码字W:';s2='Fano 编码平均码字长度L:';s3='Fano 编码的编码效率q:';disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);附录E Huffman编码Huffman编码(1)% huffman编码生成器%% 函数说明:%% [W,L,q]=huffman(P) 为huffman编码函数%% P为信源的概率矢量,W为编码返回的码字%% L为编码返回的平均码字长度,q为编码效率%%*****************************************%function [W,L,q]=huffman(P)if (length(find(P<=0)) ~=0)error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件endif (abs(sum(P)-1)>10e-10)error('Not a prob.vector,component do not add up to 1') % 判断是否符合概率和为1 endn=length(P); % 计算输入元素个数p=P;mark=zeros(n-1,n); % mark为n-1行、n列矩阵,用来记录每行最小两概率叠加后概率排列次序% 1) 确定概率大小值的排列,得到mark矩阵。
matlab熵权法求权重和综合得分

熵权法(Entropy weight method)是一种用于求解权重和综合得分的数学方法,在实际应用中具有重要的意义。
本文将从以下几个方面对熵权法进行介绍和分析,以帮助读者更好地理解和应用这一方法。
一、熵权法的原理熵权法是一种基于信息熵理论的多指标决策方法,其基本原理是利用信息熵的概念对决策对象的指标进行加权,以确定各指标的权重,并最终进行综合评价。
在具体操作中,熵权法首先需要计算每个指标的信息熵,然后基于信息熵计算每个指标的权重,最终利用权重对指标数据进行加权求和,得到综合得分。
二、熵权法的计算步骤1. 收集指标数据:首先需要收集决策对象的各项指标数据,这些数据可以是数量型也可以是分类型,但需要保证数据的准确性和完整性。
2. 计算信息熵:对于数量型指标,可以利用概率分布来计算信息熵;对于分类型指标,可以利用类别的概率分布来计算信息熵。
3. 计算权重:根据各指标的信息熵,可以通过一定的计算方法求解各指标的权重,常用的计算方法包括熵值法、熵权法、熵-权层次法等。
4. 综合得分:最后利用各指标的权重对指标数据进行加权求和,得到综合得分,从而实现对决策对象的综合评价。
三、熵权法的优缺点分析1. 优点:(1)能够综合考虑各指标的信息量,避免了常规加权法中主观性和任意性的缺点;(2)对指标数据的变化较为敏感,能够体现决策对象各指标的变化情况;(3)在处理较为复杂的决策问题时具有较好的适用性和灵活性。
2. 缺点:(1)熵权法在权重计算时对数据的稳定性要求较高,一定范围内的数据变化可能导致权重结果的较大波动;(2)对于分类型指标的处理相对较为复杂,需要对类别进行合理的处理和转化。
四、熵权法在MATLAB中的实现MATLAB作为一种功能强大的科学计算软件,提供了丰富的工具和函数支持,能够方便地实现熵权法的计算和应用。
在MATLAB中,可以利用相关的数学工具箱或自定义函数来实现熵权法的各个步骤,包括数据处理、信息熵计算、权重计算和综合得分的计算,从而实现对决策对象的综合评价和排序。
实验一-信息熵与图像熵计算-正确

实验一信息熵与图像熵计算(2 学时)一、实验目的1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数;2.复习信息熵基本定义,能够自学图像熵定义和基本概念。
二、实验内容1.能够写出MATLAB源代码,求信源的信息熵;2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。
三、实验仪器、设备1.计算机-系统最低配置256M内存、P4 CPU;2.MATLAB编程软件。
四实验流程图五实验数据及结果分析四、实验原理1.MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。
2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。
自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。
所发出的消息不同,它们所含有的信息量也就不同。
任何一个消息的自信息量都代表不了信源所包含的平均自信息量。
不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:1( ) 1 ( ) [log ] ( ) log ( ) i n i i p a i H E p a p a X 信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。
它是从平均意义上来表征信源的总体特性的。
对于某特定的信源,其信息熵只有一个。
不同的信源因统计特性不同,其熵也不同。
3.学习图像熵基本概念,能够求出图像一维熵和二维熵。
图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。
图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:2550 log i i i p p H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。
选择图像的邻域灰度均值作为灰度2分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示邻域灰度(0<=j<=255),2 ( , ) / ij p f i j N上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度,定义离散的图像二维熵为:2550 log ij ij i p p H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。
信息熵与图像熵的计算

实验一信息熵与图像熵计算一、实验目的1.复习MATLAB 的基本命令,熟悉MATLAB 下的基本函数。
2.复习信息熵基本定义, 能够自学图像熵定义和基本概念。
二、实验仪器、设备1.计算机-系统最低配置 256M 内存、P4 CPU。
2.Matlab 仿真软件- 7.0 / 7.1 / 2006a 等版本Matlab 软件。
三、实验内容与原理(1)内容:1.能够写出MATLAB 源代码,求信源的信息熵。
2.根据图像熵基本知识,综合设计出MATLAB 程序,求出给定图像的图像熵。
(2)原理1. MATLAB 中数据类型、矩阵运算、图像文件输入与输出知识复习。
2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。
自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。
所发出的消息不同,它们所含有的信息量也就不同。
任何一个消息的自信息量都代表不了信源所包含的平均自信息量。
不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。
它是从平均意义上来表征信源的总体特性的。
对于某特定的信源,其信息熵只有一个。
不同的信源因统计特性不同,其熵也不同。
3.学习图像熵基本概念,能够求出图像一维熵和二维熵。
图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。
图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi 表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:255log i iip p ==∑H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。
选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征二元组,记为( i, j ),其中i 表示像素的灰度值(0 <= i <= 255),j 表示邻域灰度(0 <= j <= 255),2(,)/ijP f i j N =上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i, j) 为特征二元组(i, j)出现的频数,N 为图像的尺度,定义离散的图像二维熵为:255logij ijip p ==∑H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征.四、实验步骤1.求解信息熵过程:1) 输入一个离散信源,并检查该信源是否是完备集。
信息论实验报告1--信息熵的计算

~
fori=1:5
forj=1:4
sum=sum+A(i,j);
end
A(i,:)=A(i,:)/sum;
,
sum=0;
end
y=A;
求H(x|y):
functiony=H_x_y(A)
"
sum=0;
fori=1:4
forj=1:5
sum=sum+A(j,i);
end
\
A(:,i)=A(:,i)/sum;
实验
总结
日
本次实验的收获、体会、经验、问题和教训:
\
1、信息熵计算Matlab源码
求H(x):
function[a,b]=H_x(A)
sum =0;
B=zeros(5,1);
;
hx=0;%求H(x)的熵
fori=1:5%i代表行
forj=1:4%j代表列
sum=sum+A(i,j);
end
…
hx=hx-sum*log2(sum);
求H(x|y),H(y|x)
A=[ 0 0 0; 0 0;0 0;0 0 ;0 0 0];
H_x_y(A)
ans =
0 0 0
0 0
0 0
0 0
0 0 0
H_y_x(A)
ans =
0 0 0
0 0
0 0
0 0
0 0 0
教师
评语
成绩
辽宁工程技术大学上机实验报告
(
实验名称
信息熵的相关计算
院系
/
姓名
—
实验
)
目的
简述本次实验目的:
1、理解信息熵的概念
实验一_信息熵与图像熵计算_正确

实验一信息熵与图像熵计算(2 学时)一、实验目的1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数;2.复习信息熵基本定义,能够自学图像熵定义和基本概念。
二、实验容1.能够写出MATLAB源代码,求信源的信息熵;2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。
三、实验仪器、设备1.计算机-系统最低配置256M存、P4 CPU;2.MATLAB编程软件。
四实验流程图五实验数据及结果分析四、实验原理1.MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。
2.利用信息论息熵概念,求出任意一个离散信源的熵(平均自信息量)。
自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。
所发出的消息不同,它们所含有的信息量也就不同。
任何一个消息的自信息量都代表不了信源所包含的平均自信息量。
不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:1( ) 1 ( ) [log ] ( ) log ( ) i n i i p a i H E p a p a X 信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。
它是从平均意义上来表征信源的总体特性的。
对于某特定的信源,其信息熵只有一个。
不同的信源因统计特性不同,其熵也不同。
3.学习图像熵基本概念,能够求出图像一维熵和二维熵。
图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。
图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:2550 log i i i p p H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。
选择图像的邻域灰度均值作为灰度2分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示邻域灰度(0<=j<=255),2 ( , ) / ij p f i j N上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度,定义离散的图像二维熵为:2550 log ij ij i p p H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域灰度分布的综合特征。
信息论实验报告(实验一、信源与信息熵的计算)

学生实验报告
院别电子信息学院课程名称信息论语编码实验
班级实验名称实验一、信源与信息熵的计算姓名实验时间
学号指导教师
成绩
报告内容
一、实验目的和任务
1、理解自信息、互信息、熵等概念;
2、熟悉 MATLAB程序设计;
3、掌握通过计算机实验计算离散信源的信息量及熵的计算方法;
4、对给定信源分别计算出信源熵、条件熵、联合熵、交互熵;
二、实验原理介绍
三、实验设备介绍
1、计算机
2、编程软件MATLAB6.5以上
四、实验内容和步骤
H X H Y H X Y H Y X H XY I X Y 分别求出如下图所示离散信道的(),(),(|),(|),(),(;)
1、面出程序设计的流程图。
2、写出在调试过程中出现的问题。
3、对实验的结果进行分析。
五、实验数据记录
六、实验结论与心得
通过本次实验,加强了对matlab程序的学习,进一步提高了我的编程能力。
熵权法在matlab中的应用

熵权法在matlab中的应用1. 介绍熵权法熵权法是一种多标准决策方法,它综合考虑了不同指标的权重和评价值,基于信息熵的原理进行计算,用于解决复杂的决策问题。
2. 熵权法的原理与方法在熵权法中,首先需要对每个指标进行标准化处理,使得各指标具有可比性和可加性。
根据各指标的评价值计算信息熵,信息熵越大表示指标的不确定性越高,反之亦然。
接下来,根据信息熵计算每个指标的权重,权重越大表示指标对决策结果的影响越大。
根据指标的权重和评价值计算综合评价值,综合评价值越大表示决策方案的优势越大。
通过熵权法可以实现对多个指标的综合评估与排序。
3. 熵权法在MATLAB中的应用步骤步骤一:准备数据将指标数据导入MATLAB环境中,可以使用Excel或文本文件进行数据导入。
确保指标数据的准确性和完整性。
步骤二:数据标准化根据指标的度量单位和范围,对指标数据进行标准化处理,使得各指标具有可比性和可加性。
常用的标准化方法包括最大-最小标准化和零-均值标准化。
根据需要选择合适的标准化方法进行处理。
步骤三:计算信息熵根据标准化后的指标数据,利用公式计算每个指标的信息熵。
信息熵的计算公式为:•H(i) = - Σ(p(ij) * log(p(ij)))其中,H(i)表示第i个指标的信息熵,p(ij)表示第i个指标第j个水平的概率。
步骤四:计算权重根据信息熵计算每个指标的权重。
信息熵越大表示指标的不确定性越高,权重越小;反之,信息熵越小表示指标的信息量越大,权重越大。
常用的计算权重的方法包括熵值法和逆熵值法。
步骤五:计算综合评价值根据指标的权重和评价值,计算各个方案的综合评价值。
综合评价值越大表示方案的优势越大。
步骤六:排序与决策根据综合评价值对各个方案进行排序,选择评价值最高的方案作为决策结果。
4. 示例:熵权法在房产投资中的应用假设我们需要对不同地区的房产投资进行评估和排序。
我们选择三个指标进行综合评价,分别是房价增长率、租金收益率和生活便利程度。
matlab样本熵分析

matlab样本熵分析【matlab样本熵分析】1. 引言在实际问题求解中,数据的复杂性和多样性经常导致难以从数据中得出有用的信息。
为了更好地理解和分析数据,在信号处理、图像处理以及模式识别领域中,熵函数被广泛应用。
在这篇文章中,我们将探讨一种基于 MATLAB 的方法,即样本熵分析,用于从数据中提取有关随机性和复杂性的信息。
2. 熵的概念熵是信息论中一个关键的概念,描述了随机变量的不确定性。
熵越大,表示随机变量越不确定,而熵越小,则表示随机变量越确定。
在我们的数据分析中,熵可以被用来衡量数据集的复杂性和不规律性。
3. 样本熵的计算在 MATLAB 中,可以使用以下步骤计算样本熵:3.1 数据准备需要准备一组数据用于计算样本熵。
这可以是任何类型的数据,时间序列数据、图像数据或声音数据。
3.2 确定样本长度样本长度是指用于计算样本熵的数据窗口的大小。
较小的样本长度会导致较短的时间尺度分析,而较大的样本长度则会产生较长的时间尺度分析。
在选择样本长度时,需要根据数据的实际情况和分析目的进行权衡。
3.3 计算样本熵样本熵的计算涉及到两个关键步骤:3.3.1 生成符号序列将数据分成不相交的样本长度窗口。
根据每个样本长度窗口中的数据值,将其映射到一系列符号。
符号的选择可以根据问题的具体要求来确定,可以将数据值离散化到不同的取值范围内,或者使用统计方法将数据映射为不同的符号。
3.3.2 计算样本熵使用生成的符号序列,可以通过应用香农熵的公式来计算样本熵。
香农熵是信息论中常用的一种熵度量方式,用于衡量随机变量的平均信息量。
3.4 统计分析完成样本熵的计算后,可以进行进一步的统计分析,例如绘制样本熵的分布图、计算平均样本熵或计算不同样本长度下的样本熵。
4. 优势和应用4.1 随机性分析样本熵可以用于分析数据中的随机性和不规律性。
通过计算样本熵,我们可以了解数据的复杂程度,并获取有关数据中的随机特征的信息。
4.2 异常检测样本熵可以作为一种异常检测的指标。
关于信源熵的实验报告

实验报告实验名称关于信源熵的实验课程名称信息论与编码姓名xxx 成绩90班级电子信息1102学号0909112204日期2013.11.22地点综合实验楼实验一MATLAB完成离散信源熵的计算一、实验目的1. 通过信息论与编码学理论,掌握离散信源熵的原理和计算方法。
2. 熟悉matlab 软件的基本操作和基本工具以及使用,掌握利用matlab求解信息熵的原理和方法。
3. 练习使用matlab 求解信源的信息熵。
自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。
4. 掌握Excel的绘图功能,使用Excel绘制散点图、直方图。
二、实验原理1.离散信源的基本概念、原理和信源熵相关计算公式产生离散信息的信源称为离散信源。
离散信源只能产生有限种符号,因此离散离散消息可以看成是一种有限个状态的随机序列。
随机事件的自信息量I(xi)为其对应的随机变量xi 出现概率对数的负值。
即: I (xi )= -log2p ( xi)随机事件X 的平均不确定度(信源熵)H(X)为离散随机变量 xi 出现概率的数学期望,即:2.离散二元信源的信息熵设信源符号集X={0,1} ,每个符号发生的概率分别为p(0)= p,p(1)= q,p+ q =1,即信源的概率空间为:则该二元信源的信源熵为:H(X) = - p*logp–q*logq = - p*logp –(1 - p)*log(1- p)即:H (p) = - p*logp –(1 - p)*log(1- p) 其中 0 ≤ p ≤13.MATLAB二维绘图用matlab 中的命令plot( x , y) 就可以自动绘制出二维图来。
例:在matlab 上绘制余弦曲线图,y = cos x ,其中 0 ≤ x ≤ 2 。
>>x =0:0.1:2*pi; %生成横坐标向量,使其为 0,0.1,0.2,…,6.2>>y =cos(x ); %计算余弦向量>>plot(x ,y ) %绘制图形4.MATLAB求解离散信源熵求解信息熵过程:1) 输入一个离散信源,并检查该信源是否是完备集。
Matlab学习系列熵值法确定权重

Matlab学习系列.-熵值法确定权重————————————————————————————————作者:————————————————————————————————日期:19. 熵值法确定权重一、基本原理在信息论中,熵是对不确定性的一种度量。
信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。
根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大,其熵值越小。
二、熵值法步骤1. 选取n 个国家,m 个指标,则x ij 为第i 个国家的第j 个指标的数值(i =1, 2…, n ; j =1, 2,…, m );2. 指标的归一化处理:异质指标同质化由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令ij ij x x =,从而解决各项不同质指标值的同质化问题。
而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于高低指标我们用不同的算法进行数据标准化处理。
其具体方法如下:正向指标:12'1212min{,,...,}max{,,...,}min{,,...,}ij j j nj ij j j nj j j nj x x x x x x x x x x x -=-负向指标:12'1212max{,,...,}max{,,...,}min{,,...,}j j nj ijij j j nj j j nj x x x x x x x x x x x -=-则'ij x 为第i 个国家的第j 个指标的数值(i =1, 2…, n ; j =1, 2,…, m )。
为了方便起见,归一化后的数据'ij x 仍记为x ij ;3. 计算第j 项指标下第i 个国家占该指标的比重:1, 1,2...,, 1,2 (i)ij n ij i x p i n j m x====∑4. 计算第j 项指标的熵值:1ln()nj ij ij i e k p p ==-∑其中,k =1/ln(n )>0. 满足e j ≥0;5. 计算信息熵冗余度:1j j d e =-;6. 计算各项指标的权值:1, 1,2,...,jj m j j d w j m d===∑7. 计算各国家的综合得分:1, 1,2,...mi j ij j s w p i n ==⋅=∑三、Matlab 实现按上述算法步骤,编写Matlab 函数:shang.mfunction [s,w]=shang(x)% 函数shang(), 实现用熵值法求各指标(列)的权重及各数据行的得分% x为原始数据矩阵, 一行代表一个国家, 每列对应一个指标% s返回各行得分,w返回各列权重[n,m]=size(x); % n=23个国家, m=5个指标%%数据的归一化处理% Matlab2010b,2011a,b版本都有bug,需如下处理. 其它版本直接用[X,ps]=mapminmax(x',0,1);即可[X,ps]=mapminmax(x');ps.ymin=0.002; % 归一化后的最小值ps.ymax=0.996; % 归一化后的最大值ps.yrange=ps.ymax-ps.ymin; % 归一化后的极差,若不调整该值, 则逆运算会出错X=mapminmax(x',ps);% mapminmax('reverse',xx,ps); % 反归一化, 回到原数据X=X'; % 为归一化后的数据, 23行(国家), 5列(指标)%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)for i=1:nfor j=1:mp(i,j)=X(i,j)/sum(X(:,j));endend%% 计算第j个指标的熵值e(j)k=1/log(n);for j=1:me(j)=-k*sum(p(:,j).*log(p(:,j)));endd=ones(1,m)-e; % 计算信息熵冗余度w=d./sum(d); % 求权值ws=w*p'; % 求综合得分程序测试,现有数据如下:(存为data.txt)114.6 1.1 0.71 85.0 34655.3 0.96 0.4 69.0 300132.4 0.97 0.54 73.0 410152.1 1.04 0.49 77.0 433103.5 0.96 0.66 67.0 38581.0 1.08 0.54 96.0 336179.3 0.88 0.59 89.0 44629.8 0.83 0.49 120.0 28992.7 1.15 0.44 154.0 300248.6 0.79 0.5 147.0 483115.0 0.74 0.65 252.0 45364.9 0.59 0.5 167.0 402163.6 0.85 0.58 220.0 49595.7 1.02 0.48 160.0 384139.5 0.70 0.59 217.0 47889.9 0.96 0.39 105.0 31476.7 0.95 0.51 162.0 341121.8 0.83 0.60 140.0 40142.1 1.08 0.47 110.0 32678.5 0.89 0.44 94.0 28077.8 1.19 0.57 91.0 36490.0 0.95 0.43 89.0 301100.6 0.82 0.59 83.0 456执行代码:x=load('data.txt'); % 读入数据[s,w]=shang(x)运行结果:s = Columns 1 through 90.0431 0.0103 0.0371 0.0404 0.0369 0.0322 0.0507 0.0229 0.0397Columns 10 through 180.0693 0.0878 0.0466 0.0860 0.0503 0.0800 0.0234 0.0456 0.0536Columns 19 through 230.0272 0.0181 0.0364 0.0202 0.0420w = 0.1660 0.0981 0.1757 0.3348 0.2254。
信息熵与图像熵的计算

实验一信息熵与图像熵计算一、实验目的1.复习MATLAB 的基本命令,熟悉MATLAB 下的基本函数。
2.复习信息熵基本定义, 能够自学图像熵定义和基本概念。
二、实验仪器、设备1.计算机-系统最低配置 256M 内存、P4 CPU。
2.Matlab 仿真软件- 7.0 / 7.1 / 2006a 等版本Matlab 软件。
三、实验内容与原理(1)内容:1.能够写出MATLAB 源代码,求信源的信息熵。
2.根据图像熵基本知识,综合设计出MATLAB 程序,求出给定图像的图像熵。
(2)原理1. MATLAB 中数据类型、矩阵运算、图像文件输入与输出知识复习。
2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。
自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。
所发出的消息不同,它们所含有的信息量也就不同。
任何一个消息的自信息量都代表不了信源所包含的平均自信息量。
不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。
它是从平均意义上来表征信源的总体特性的。
对于某特定的信源,其信息熵只有一个。
不同的信源因统计特性不同,其熵也不同。
3.学习图像熵基本概念,能够求出图像一维熵和二维熵。
图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。
图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi 表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为:255log i iip p ==∑H图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。
选择图像的邻域灰度均值作为灰度分布的空间特征量,与图像的像素灰度组成特征二元组,记为( i, j ),其中i 表示像素的灰度值(0 <= i <= 255),j 表示邻域灰度(0 <= j <= 255),2(,)/ijP f i j N =上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i, j) 为特征二元组(i, j)出现的频数,N 为图像的尺度,定义离散的图像二维熵为:255logij ijip p ==∑H构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征.四、实验步骤1.求解信息熵过程:1) 输入一个离散信源,并检查该信源是否是完备集。
信息熵的matlab程序实例

求一维序列的信息熵(香浓熵)的matlab程序实例对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵。
但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的,不会是(0-255)这么确定,如果进行域值变换,使其转换到一个整数范围的话,就会丢失数据,请高手指点,怎么计算。
比如数字信号是x(n),n=1~N(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第一块,10~20的第二块,以此类推。
这之前需要对x(n)做一些归一化处理(2)统计每一块的数据个数,并求出相应的概率(3)用信息熵公式求解以上求解方法获得的虽然是近似的信息熵,但是一般认为,这么做是没有问题的求一维序列的信息熵的matlab程序代码如下:(已写成调用的函数形式)测试程序:fs=12000;N=12000;T=1/fs;t=(0:N-1)*T;ff=104;sig=0.5*(1+sin(2*pi*ff*t)).*sin(2*pi*3000*t)+rand(1,length(t));Hx=yyshang(sig,10)%———————求一维离散序列信息熵matlab代码function Hx=yyshang(y,duan)%不以原信号为参考的时间域的信号熵%输入:maxf:原信号的能量谱中能量最大的点%y:待求信息熵的序列%duan:待求信息熵的序列要被分块的块数%Hx:y的信息熵%duan=10;%将序列按duan数等分,如果duan=10,就将序列分为10等份x_min=min(y);x_max=max(y);maxf(1)=abs(x_max-x_min);maxf(2)=x_min;duan_t=1.0/duan;jiange=maxf(1)*duan_t;% for i=1:10% pnum(i)=length(find((y_p>=(i-1)*jiange)&(y_p<i*jiange)));% endpnum(1)=length(find(y<maxf(2)+jiange));for i=2:duan-1pnum(i)=length(find((y>=maxf(2)+(i-1)*jiange)&(y<maxf(2)+i*jiange)));endpnum(duan)=length(find(y>=maxf(2)+(duan-1)*jiange));%sum(pnum)ppnum=pnum/sum(pnum);%每段出现的概率%sum(ppnum)Hx=0;for i=1:duanif ppnum(i)==0Hi=0;elseHi=-ppnum(i)*log2(ppnum(i));endHx=Hx+Hi;endend%----------------扩展阅读:实验一:计算离散信源的熵一、实验设备:1、计算机2、软件:Matlab二、实验目的:1、熟悉离散信源的特点;2、学习仿真离散信源的方法3、学习离散信源平均信息量的计算方法4、熟悉Matlab 编程;三、实验内容:1、写出计算自信息量的Matlab 程序2、写出计算离散信源平均信息量的Matlab 程序。
matlab熵权法计算得分

matlab熵权法计算得分
熵权法是一种多属性决策分析方法,常用于对多个指标进行加
权得分,以便进行综合评价和决策。
在MATLAB中,我们可以使用以
下步骤来实现熵权法计算得分:
1. 数据准备,首先,我们需要准备好待评价的多个指标的数据,通常以矩阵的形式存储,每一行代表一个样本,每一列代表一个指标。
2. 数据标准化,对于不同量纲的指标,需要进行数据标准化处理,常见的方法包括最大-最小标准化、零-均值标准化等,以确保
各指标在计算中具有相同的权重。
3. 计算信息熵,对于每个指标,需要计算其信息熵,这可以通
过编写MATLAB函数来实现。
信息熵的计算涉及到概率分布和对数运算,需要仔细处理。
4. 计算权重,根据每个指标的信息熵,可以计算出其权重,权
重的计算通常涉及到熵值的归一化处理,以确保各指标权重之和为1。
5. 计算得分,最后,根据每个指标的权重和样本数据,可以计算出每个样本的得分,通常是将各指标的数值乘以其权重并求和得到最终得分。
在MATLAB中,可以利用矩阵运算和函数编写来实现以上步骤,例如使用循环和向量化操作来高效地处理大量数据。
另外,MATLAB 也提供了一些工具包和函数,如统计工具箱和优化工具箱,可以辅助进行熵权法的计算和优化。
总之,熵权法的计算涉及到数据准备、标准化、信息熵计算、权重计算和得分计算等多个步骤,需要仔细处理和编写相应的MATLAB代码来实现。
希望以上回答能够帮助到你理解在MATLAB中如何进行熵权法计算得分。
熵权法及改进的TOPSIS及matlab应用

熵权法及改进的TOPSIS一、熵权法1.熵权法确定客观权重熵学理论最早产生于物理学家对热力学的研究,熵的概念最初描述的是一种单项流动、不可逆转的能量传递过程,随着思想和理论的不断深化和发展,后来逐步形成了热力学熵、统计熵、信息熵三种思路。
美国数学家克劳德·艾尔伍德·香农(Claude Elwood Shannon)最先提出信息熵的概念,为信息论和数字通信奠定了基础。
信息熵方法用来确定权重己经非常广泛地应用于工程技术、社会经济等各领域。
由信息熵的基本原理可知,对于一个系统来说,信息和熵分别是其有序程度和无序程度的度量,二者的符号相反、绝对值相等。
假设一个系统可能处于不同状态,每种状态出现的概率为(1,,)=i P i n则该系统的熵就定义为:1ln ==∑ni i E P P在决策中,决策者获得信息的多少是决策结果可靠性和精度的决定性因素之一,然而,在多属性决策过程中,往往可能出现属性权重大小与其所传达的有价值的信息多少不成正比的情况。
例如:某一指标所占的权重在所有指标中最大,但在整个决策矩阵中,这一指标所有方案的数值却相差甚微,即这一指标所传递的有用信息较少。
显然,这一最重要的指标在决策过程中所起的作用却很小,如果不对其属性权重进行适当的处理,必将会造成评价决策方案的失真。
熵本身所具有的物理意义及特性决定其应用在多属性决策上是一个很理想的尺度。
某项指标之间值的差距越大,区分度越高,所携带和传输的信息就越多,该指标的熵值就会越小,在总体评价中起到的作用越大;相反,某项指标之间值的差距越小,区分度越低,所携带和传输的信息就越少,该指标的熵值就会越大,在总体评价中起到的作用越小。
因此,可采用计算偏差度的方法求出客观权重,再利用客观权重对专家评价出的主观权重进行修正,得出综合权重。
与其他客观赋权方法相比,该方法不仅仅是建立在概率的基础之上,还以决策者预先确定的偏好系数为基础,把决策者的主观判断和待评价对象的固有信息有机地结合起来,实现了主观与客观的统一,得出的权值准确性更高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
求一维序列的信息熵(香浓熵)的matlab程序实例
对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵。
但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的,不会是(0-255)这么确定,如果进行域值变换,使其转换到一个整数范围的话,就会丢失数据,请高手指点,怎么计算。
比如数字信号是x(n),n=1~N
(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第
一块,10~20的第二块,以此类推。
这之前需要对x(n)做一些归一化处理
(2)统计每一块的数据个数,并求出相应的概率
(3)用信息熵公式求解
以上求解方法获得的虽然是近似的信息熵,但是一般认为,这么做是没有问题的
求一维序列的信息熵的matlab程序代码如下:(已写成调用的函数形式)
测试程序:
fs=12000;
N=12000;
T=1/fs;
t=(0:N-1)*T;
ff=104;
sig=0.5*(1+sin(2*pi*ff*t)).*sin(2*pi*3000*t)+rand(1,length(t));
Hx=yyshang(sig,10)
%———————求一维离散序列信息熵matlab代码
function Hx=yyshang(y,duan)
%不以原信号为参考的时间域的信号熵
%输入:maxf:原信号的能量谱中能量最大的点
%y:待求信息熵的序列
%duan:待求信息熵的序列要被分块的块数
%Hx:y的信息熵
%duan=10;%将序列按duan数等分,如果duan=10,就将序列分为10等份
x_min=min(y);
x_max=max(y);
maxf(1)=abs(x_max-x_min);
maxf(2)=x_min;
duan_t=1.0/duan;
jiange=maxf(1)*duan_t;
% for i=1:10
% pnum(i)=length(find((y_p>=(i-1)*jiange)&(y_p<i*jiange)));
% end
pnum(1)=length(find(y<maxf(2)+jiange));
for i=2:duan-1
pnum(i)=length(find((y>=maxf(2)+(i-1)*jiange)&(y<maxf(2)+i*jiange)));
end
pnum(duan)=length(find(y>=maxf(2)+(duan-1)*jiange));
%sum(pnum)
ppnum=pnum/sum(pnum);%每段出现的概率
%sum(ppnum)
Hx=0;
for i=1:duan
if ppnum(i)==0
Hi=0;
else
Hi=-ppnum(i)*log2(ppnum(i));
end
Hx=Hx+Hi;
end
end
%----------------
扩展阅读:
实验一:计算离散信源的熵
一、实验设备:
1、计算机
2、软件:Matlab
二、实验目的:
1、熟悉离散信源的特点;
2、学习仿真离散信源的方法
3、学习离散信源平均信息量的计算方法
4、熟悉Matlab 编程;
三、实验内容:
1、写出计算自信息量的Matlab 程序
2、写出计算离散信源平均信息量的Matlab 程序。
3、掌握二元离散信源的最大信息量与概率的关系。
4、将程序在计算机上仿真实现,验证程序的正确性并完成习题。
四、实验报告要求
简要总结离散信源的特点及离散信源平均信息量的计算,写出习题的MATLAB实现语句。
信息论基础:
自信息的计算公式
Matlab实现:I=log2(1/p)或I=-log2(p)
熵(平均自信息)的计算公式
Matlab实现:HX=sum(-x.*log2(x));或者h=h-x(i)*log2(x(i));习题:
1.甲地天气预报构成的信源空间为:
乙地信源空间为:
求此两个信源的熵。
求各种天气的自信息量。
案:
运行程序:
p1=[1/2,1/4,1/8,1/8];%p1代表甲信源对应的概率
p2=[7/8,1/8];%p2代表乙信源对应的概率
H1=0.0;
H2=0.0;
I=[];
J=[];
for i=1:4
H1=H1+p1(i)*log2(1/p1(i));
I(i)=log2(1/p1(i));
end
disp('自信息量分别为:');
I
disp('H1信源熵为:');
H1
for j=1:2
H2=H2+p2(j)*log2(1/p2(j)); J(j)=log2(1/p2(j));
end
disp('自信息量分别为:');
J
disp('H2信源熵为:');
H2。