信源熵函数曲线Matlab仿真
信源熵函数曲线Matlab 仿真
• 实验目的
1. 掌握离散信源熵的原理和计算方法。
2.熟悉matlab 软件的基本操作,练习应用matlab 软件进行信源熵函数曲线的绘制。
3. 理解信源熵的物理意义,并能从信源熵函数曲线图上进行解释其物理意义。
• 实验原理
离散信源相关的基本概念、原理和计算公式
产生离散信息的信源称为离散信源。离散信源只能产生有限种符号。 假定X 是一个离散随机变量,即它的取值范围R ={x 1,x 2,x 3,…}是有限或可数的。设第i 个变量x i 发生的概率为p i =P {X=x i }。则:
定义一个随机事件的自信息量I (x i )为其对应的随机变量x i 出现概率对数的负值。即:
I (x i )= -log2p (x i )
定义随机事件X 的平均不确定度H (X )为离散随机变量x i 出现概率的数学期望,即:
单位为比特/符号或比特/符号序列。
平均不确定度H (X )的定义公式与热力学中熵的表示形式相同,所以又把平均不确定度H (X )称为信源X 的信源熵。
必须注意一下几点:
a. 某一信源,不管它是否输出符号,只有这些符号具有某些概率特性,必有信源的熵值;这熵值是在总体平均上才有意义,因而是个确定值,一般写成H (X ),X 是指随机变量的整体(包括概率分布)。
b. 信息量则只有当信源输出符号而被接收者收到后,才有意义,这就是给与信息者的信息度量,这值本身也可以是随机量,也可以与接收者的情况有关。 c. 熵是在平均意义上来表征信源的总体特征的,信源熵是表征信源的平均不确定度,平均自信息量是消除信源不确定度时所需要的信息的量度,即收到一个信源符号,全部解除了这个符号的不确定度。或者说获得这么大的信息量
后,信源不确定度就被消除了。信源熵和平均自信息量两者在数值上相等,但含义不同。
当某一符号x i 的概率p(xi ) 为零时,p(xi )log p(xi ) 在熵公式中无意义,为此规定这时的p (x i )log p (x i ) 也为零。当信源X 中只含有一个符号x 时,必有p (x )=1,此时信源熵H (X )为零。
•
• 实验步骤 用matlab 软件绘制二源信源熵函数曲线。根据曲线说明信源熵的物理意义。 实验结果
Maltab 代码:
p=0.0000001:0.0001:1;
h=-p.*log2(p)-(1-p).*log2(1-p);
plot(p,h)
hold on;
stem(0.5,1,'--.');
xlabel('p');
ylabel('h(p)');
title('二源信源熵函数曲线')
结果图像:
哈夫曼编码Matlab 仿真
一、实验目的
• 掌握哈夫曼编码的原理及编码步骤
• 练习matlab 中哈夫曼编码函数的调用及通信工具箱的使用
二、实验原理
通信的根本问题是如何将信源输出的信息在接收端的信宿精确或近似的复制出来。为了有效地复制信号,就通过对信源进行编码,使通信系统与信源的统计特性相匹配。
若接收端要求无失真地精确地复制信源输出的信息,这样的信源编码即为无失真编码。即使对于一个小的时间段内,连续信源输出的信息量也可以是无限大的,所以对其是无法实现无失真编码的;而离散信源输出的信息量却可以看成是有限的,所以只有离散信源才可能实现无失真编码。
凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。
变字长编码的最佳编码定理:在变字长码中,对于概率大的信息符号编以短字长的码;对于概率小的信息符号编以长字长的码。如果码字长度严格按照符号概率的大小顺序排列,则平均码字长度一定小于俺任何顺序排列方式得到的码字长度。
哈夫曼编码就是利用了这个定理,讲等长分组的信源符号,根据其概率分布采用不等长编码。概率大的分组,使用短的码字编码;概率小的分组,使用长的码字编码。哈夫曼编码把信源按概率大小顺序排列,并设法按逆次序分配码字的长度。在分配码字的长度时,首先将出现概率最小的两个符号相加,合成一个概率;第二步把这个合成的概率看成是一个新组合符号的概率,重复上述做法,直到最后只剩下两个符号的概率为止。完成以上概率相加顺序排列后,再反过来逐步向前进行编码。每一步有两个分支,各赋予一个二进制码,可以对概率大的编为0码,概率小的编为1码。反之亦然。
哈夫曼编码的具体步骤归纳如下:
•
•
• 统计n 个信源消息符号,得到n 个不同概率的信息符号。 将这n 个信源信息符号按其概率大小依次排序: p (x 1) ≥p (x 2)≥…≥p (x n ) 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列。
将剩余的信息符号,按概率大小重新进行排序。 •
•
•
•
重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排序。 如此反复重复n-2次,最后只剩下两个概率。 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成霍夫曼编码字。编码结束。
哈夫曼编码产生最佳整数前缀码,即没有一个码字是另一个码字的前缀,因此哈夫曼编码是唯一码。
编码之后,哈夫曼编码的平均码长为:
哈夫曼编码的效率为:
三、实验内容
为某一信源进行哈夫曼编码。该信源的字符集为X={x 1,x 2,…x6 },相应的概率矢量为:P =(0.30,0.25,0.21,0.10,0.09,0.05),即X ,P 的概率空间为:
根据哈夫曼编码算法对该信源进行哈夫曼编码。并计算其平均码长和编码效率。
调用matlab 哈夫曼编码函数进行哈夫曼编码,与人工编码结果做比较。 • huffmandict 函数:为已知概率分布的信源模型生成哈夫曼编解码索引
表。
调用方法如下:
[dict,avglen] = huffmandict (symbols, p)
[dict,avglen] = huffmandict (symbols, p, N)
[dict,avglen] = huffmandict (symbols, p, N, variance)