香农编码译码c语言,实验三香农编码.doc
实验三香农编码
信息论与编码实验报告
院系: 哈尔滨理工大学荣成校区
专业: 电子信息工程
学号:
姓名:
日期: 2015年6月16日
香农编码
信息论与编码第三次实验报告
一、实验目的和任务?
1、?理解信源编码的意义;?
2、?熟悉?MATLAB程序设计;??
3、?掌握香农编码的方法及计算机实现;??
4、?对给定信源进行香农编码,并计算编码效率;?
二、实验原理介绍?
给定某个信源符号的概率分布,通过以下的步骤进行香农编码
?1、信源符号按概率从大到小排列;?
???
2、确定满足下列不等式的整数码长为?
????
3、为了编成唯一可译码,计算第i个消息的累加概率:?
?
?4、将累加概率变换成二进制数;?
取二进制数的小数点后位即为该消息符号的二进制码字。
三、实验设备
计算机
Matlab2014
四、编码程序
N=input('N='); %输入信源符号的个数
s=0; %对行的概率进行初始化
l=0; %对列的概率初始化
H=0; %对信息熵初始化
for i=1:N
p(i)=input('p=');%输入信源符号概率分布矢量
p(i)<1; %输入概率小于1
s=s+p(i); %行概率求和
H=H+(-p(i)*log2(p(i)));%计算信源信息熵
end
if abs(s-1)>0 %若行概率和>1则报错
error('不符合概率分布')
end
for i=1:N-1 %for循环按概率分布大小对信源排序
for j=i+1:N
if p(i)
m=p(j);
p(j)=p(i);
p(i)=m;
end
end
end
for i=1:N
a=-log2(p(i)); %确定满足不等式的整数a,并领a为第i个码字的长度
if mod(a,1)==0 %a对1取余后赋值给a
w=a;
else
w=fix(a+1); %计算各信源符号的码长
end
l=l+p(i)*w; %计算平均码长
end
r=l; %香农编码的信息率(这里L=1,m=2)
n=H/r; %计算编码效率
P(1)=0; %初始1列为0;
for i=2:N
P(i)=0; %初始1列为0;累加
for j=1:i-1
P(i)=P(i)+p(j); %从2列开始累加
end
end
%计算累加概率
for i=1:N
for j=1:w
W(i,j)=fix(P(i)*2); %对每次的P(i)取码字,长度与a相同
P(i)=P(i)*2-fix(P(i)*2); %将累加概率转化为L(i)位二进制码字
end
end
W %显示码字
r %显示平均码长
n %显示编码效率
H %显示信息熵H
实验结果
>> xiangnong
N=6
p=0.25
p=0.25
p=0.20
p=0.15
p=0.10
p=0.05
W =
0 0 0 0 0
0 1 0 0 0
1 0 0 0 0
1 0 1 1 0
1 1 0 1 1
1 1 1 1 0
r =
2.7000
n =
0.8975
H =
2.4232
六、实验心得
此次实验让我明白了做程序需要先进行需求分析,然后画出流程图,根据流程图把每部分模块完成,然后再进行调试和编辑,提高了我做
香农编码译码c语言,实验三香农编码.doc相关推荐
- 红灯停绿灯行c语言编程,C语言 实验三C语 实验三.doc
C语言 实验三C语 实验三 1221410042 张锦华 18.3 最简单的C程序设计 -----实验报告 (1)①源程序 #include void main() {int a,b; float d ...
- 7-105 sdut-C语言实验——三个数排序7-106 sdut-C语言实验——模拟计算器7-107 sdut-C语言实验——找中间数
目录 7-105 sdut-C语言实验--三个数排序 7-106 sdut-C语言实验--模拟计算器 7-107 sdut-C语言实验--找中间数 7-105 sdut-C语言实验--三个数排序 分数 ...
- 【实验2 选择结构】7-9 sdut-C语言实验-三位数整数的各位数字
7-9 sdut-C语言实验-三位数整数的各位数字 分数 15 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 本题要求编写程序,输入一个三位数的正整数,并输出它的个位数字.十位数字和百位数 ...
- C语言实验报告计算成绩,c语言实验报告--学生成绩管理系统.doc
c语言实验报告--学生成绩管理系统.doc XX大学CSUC语言程序设计实践报告题目学生成绩管理系统学生姓名剽悍的小白兔指导教师TZ学院信息科学与工程学院专业班级电气信息类XXXX班完成时间20XX年 ...
- c语言程序设计 实验五数组6,c语言实验五数组程序设计解答.doc
c语言实验五数组程序设计解答.doc 实验五数组应用(二)一.实验目的1(掌握二维数组的定义和初始化.2(掌握二维数组元素的引用及其应用.3(掌握字符数组的定义和初始化.4(掌握字符数组元素的引用及其 ...
- 实验三-香农编码的MATLAB实现
信息论编码实验3~9连载,更多看专栏. 香农编码仿真实现 一.香农编码的原理 二.香农编码实例 三.程序及流程图 四.程序运行结果 五.程序自评价 一.香农编码的原理 香农码严格意义上来说不是最佳码, ...
- 二叉树的基本运算实验报告C语言,实验三 二叉树基本操作与应用实验
实验三 二叉树基本操作与应用实验 第三次实验主要包括两部分内容:1.二叉树基本操作实验:2.二叉树应用-赫夫曼树与赫夫曼编码实验.基本操作包括存储结构建立和遍历算法,本文只给出部分参考程序,请大家尽量 ...
- cmi编码用c语言实现,vhdl实现CMI编码译码
vhdl实现CMI编码译码 一.cmi编码规则 Cmi码是一种双极性二电平码.规则如下:'0'码用'01'替换,'1'码用'00'和'11'码交替表示.容易实现,'10'是禁码,编码不会出现三个以上的 ...
- c语言已知祖父年龄70,实验三循环结构程序设计.doc
实验三循环结构程序设计 实验三 循环结构程序设计 一.实验目的 (1) 掌握while.do~while.for语句的使用. (2) 掌握循环体内使用break.continue语句的作用. (3) ...
- 哈夫曼编码算法 c语言,《哈夫曼编码的算法》
以前的作业,拿出来看看,都不会了.郁闷 记得当时为了完成这作业,求了一圈朋友,最后还是在图书馆网络中找的!呵呵!在这里晒晒了 设计报告内容: 一. 课程设计名称 <哈夫曼编码的算法> 二. ...
最新文章
- 经典面试题:ES如何做到亿级数据查询毫秒级返回?
- api 微信小程序组件库colorui_2020最全微信小程序UI组件库合集
- http://www.mamicode.com/info-detail-1208112.html
- swift函数的用法,及其嵌套实例
- 【转】java字符串池和字符串堆内存分配
- 如何安装inf类型驱动程序 inno
- 移动端调取摄像头上面如何给出框_智能AI助力家居安防,创维小湃高清智能摄像头...
- kubernetes视频教程笔记 (15)-RC、RS和Deployment的关联
- 如何将图片素材转为矢量图?
- 使用GitHub小总结
- printf左右对齐
- 数字图像处理 - 实验作业一 - Python
- CentOS6启用密钥登陆
- 体检报告录入有误,到底是谁的错?
- 短视频拍摄5大景别及11种运镜手法,新手必备拍摄干货丨国仁网络资讯
- 链表的概念以及它的作用
- 《线性代数应该这样学》读书笔记
- VGG16各层处理过程
- Node.js模块化机制原理探究
- 批处理 一键登录校园网