信息论与编码实验报告材料.docx
- 文档编号:3091474
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:25
- 大小:283.73KB
信息论与编码实验报告材料.docx
《信息论与编码实验报告材料.docx》由会员分享,可在线阅读,更多相关《信息论与编码实验报告材料.docx(25页珍藏版)》请在冰豆网上搜索。
信息论与编码实验报告材料
本科生实验报告
-
实验课程信息理论与编码
学院名称信息科学与技术学院
专业名称
学生姓名
学生学号
/
指导教师
实验地点
实验成绩
;
二〇一六年九月----二〇一六年十一月
填写说明
1、适用于本科生所有的实验报告(印制实验报告册除外);
2、专业填写为专业全称,有专业方向的用小括号标明;
3、@
4、格式要求:
1用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。
2打印排版:
正文用宋体小四号,倍行距,页边距采取默认形式(上下,左右,页眉,页脚)。
字符间距为默认值(缩放100%,间距:
标准);页码用小五号字底端居中。
3具体要求:
题目(二号黑体居中);
;
摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体);
关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体);
正文部分采用三级标题;
第1章××(小二号黑体居中,段前行)
×××××小三号黑体×××××(段前、段后行)
¥
小四号黑体(段前、段后行)
参考文献(黑体小二号居中,段前行),参考文献用五号宋体,参照《参考文献著录规则(GB/T7714-2005)》。
实验一:
香农(Shannon)编码
一、实验目的
掌握通过计算机实现香农编码的方法。
二、实验要求
对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。
三、实验基本原理
给定某个信源符号的概率分布,通过以下的步骤进行香农编码
1.将信源消息符号按其出现的概率大小排列
2.确定满足下列不等式的整数码长Ki;
3.为了编成唯一可译码,计算第i个消息的累加概率
4.将累加概率Pi变换成二进制数。
5.取Pi二进制数的小数点后Ki位即为该消息符号的二进制码。
四、实验内容
1.对给定信源
进行二进制香农编码。
2.对给定信源
进行二进制香农编码。
3.自已选择一个例子进行香农编码。
五、实验设备
PC计算机,C++
六、实验报告要求
1、画出程序设计的流程图,
2、写出程序代码,
3、写出在调试过程中出现的问题,
4、对实验的结果进行分析。
七、流程图
八、程序代码
ubstr(0,K[i]);}
概率按从大到小的顺序排列;
2.按编码进制数将概率分组,使每组概率和尽可能接近或相等;
3.给每组分配一位码元;
4.将每一分组再按同样原则划分,重复2和3,直到概率不再可分为止。
四、实验内容
1.对给定信源
进行二进制费诺编码。
2.对给定信源
进行二进制费诺编码。
3.自已选择一个例子进行费诺编码。
五、实验设备
PC计算机,C++
六、实验报告要求
1、画出程序设计的流程图,
2、写出程序代码,
3、写出在调试过程中出现的问题,
4、对实验的结果进行分析。
七、流程图
八、程序代码
ength()< delete[]p;delete[]sign;delete[]code;cin>>feinuo; } 实验三: 霍夫曼编码 一、实验目的 掌握通过计算机实现霍夫曼编码 二、实验要求 对于给定的信源的概率分布,按照霍夫曼编码的方法进行计算机实现。 三、实验基本原理 霍夫曼编码的步骤: (1).把信源符号按概率大小顺序排列,并设法按逆次序分配码字的长度。 (2).在分配码字长度时,首先将出现概率最小的两个符号的概率相加合成一个概率 (3).把这个合成概率看成是一个新组合符号地概率,重复上述做法直到最后只剩下两个符号概率为止。 (4).完成以上概率顺序排列后,再反过来逐步向前进行编码,每一次有二个分支各赋予一个二进制码,可以对概率大的赋为0,概率小的赋为1。 四、实验内容 1.对给定信源 进行二进制霍夫曼编码。 2.对给定信源 进行二进制霍夫曼编码。 3.自已选择一个例子进行霍夫曼编码。 五、实验设备 PC计算机,C++ 六、实验报告要求 1、画出程序设计的流程图, 2、写出程序代码, 3、写出在调试过程中出现的问题, 4、对实验的结果进行分析。 七、流程图 八、程序代码 #include<> #include<> #include<> #include<> #include<> arent=i; HT[s2].parent=i; HT[i].lchild=s1; HT[i].rchild=s2; HT[i].weight=HT[s1].weight+HT[s2].weight; } printf("HTList: \n"); printf("Number\t\tweight\t\tparent\t\tlchild\t\trchild\n"); for(i=1;i<=m;i++) printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\n", i,HT[i].weight,HT[i].parent,HT[i].lchild,HT[i].rchild); HC=(HuffmanCode)malloc((n+1)*sizeof(char*)); cd=(char*)malloc(n*sizeof(char*)); cd[n-1]='\0'; for(i=1;i<=n;i++) { start=n-1; for(c=i,f=HT[i].parent;f! =0;c=f,f=HT[f].parent) if(HT[f].lchild==c)cd[--start]='0'; elsecd[--start]='1'; HC[i]=(char*)malloc((n-start)*sizeof(char*)); strcpy(HC[i],&cd[start]); } free(cd); returnHC; } MinCodeSelect(HuffmanTreeHT,unsignedintn) { unsignedintmin,secmin; unsignedinttemp; unsignedinti,s1,s2,tempi; MinCodecode; s1=1;s2=1; for(i=1;i<=n;i++) if(HT[i].parent==0) { min=HT[i].weight; s1=i; break; } tempi=i++; for(;i<=n;i++) if(HT[i].weight { min=HT[i].weight; s1=i; } for(i=tempi;i<=n;i++) if(HT[i].parent==0&&i! =s1) { secmin=HT[i].weight; s2=i; break; } for(i=1;i<=n;i++) if(HT[i].weight =s1&&HT[i].parent==0) { secmin=HT[i].weight; s2=i; } if(s1>s2) { temp=s1; s1=s2; s2=temp; } =s1; =s2; returncode; } voidmain() { HuffmanTreeHT=NULL; HuffmanCodeHC=NULL; unsignedint*w=NULL; unsignedinti,n; system("cls"); printf("Inputn: "); scanf("%d",&n); w=(unsignedint*)malloc((n+1)*sizeof(unsignedint*)); w[0]=0; printf("Enterweight: \n"); for(i=1;i<=n;i++) { printf("w[%d]=",i); scanf("%d",&w[i]); } HC=HuffmanCoding(HT,HC,w,n); printf("HuffmanCode: \n"); printf("Number\t\tWeight\t\tCode\n"); for(i=1;i<=n;i++) printf("%d\t\t%d\t\t%s\n",i,w[i],HC[i]); } 实验四: 信道容量的迭代算法 一、实验目的 1.进一步熟悉信道容量的迭代算法。 2.通过该实验,掌握通过计算机实验信道容量的计算方法,学习如何将复杂的公式转化为程序。 3.掌握C或C++语言数值计算的设计和调试技术。 二、实验要求 已知信源符号个数,信道符号个数,信道转移概率矩阵,用C语言或C++设计程序,实现最佳信源分布时,求出信道容量C。 三、实验基本原理 一般离散信道容量的计算步骤如下: (1)由 ; (2)由 ; (3)由 ; (4)由 。 需要指出的是,在第 (2)步信道容量C被求出后,计算并没有结束。 必须解出相应的 ,并确认所以的 都大于等于零时(i=1,2,…n),所求的C才存在。 因为我们在对 求偏导时,仅限制 ,并没有限制 ,所以求出的 可能为负值,此时的C就不存在,必须对 进行调整,再从新求解C。 一般要通过迭代算法来实现。 用迭代算法计算信道容量C的步骤如下: 记 算法: 1初始化信源分布 (一般初始化为均匀分布)置迭代计算器k=0,设置信道容量相对误差门限为,>0。 2 3 4 5 ⑦; 6置迭代序号k+1→k,转向②; 7输出 的结果; 8结束。 可以证明,平均互信息 具有收敛性,即 ,所以迭代算法最终能求出任意精度的解。 算法的收敛速度与信源初始概率分布的选择有很大的关系,初始分布选择越接近最佳分布,则收敛的速度越快,若初始分布选的正好是最佳分布,则一步就可以求得信道容量。 四实验内容 1.信道转移矩阵为 ,求信道容量及最佳的概率分布。 2.信道转移矩阵为 ,求信道容量及最佳的概率分布。 3.信道转移矩阵为 ,求信道容量及最佳的概率分布。 4.自己选择一个例子求信道容量及最佳的概率分布。 五、实验设备 PC计算机,C++ 六、实验报告要求 1.画出设计流程图,写出设计思路,方法,原理等。 2.画出程序设计的流程图。 3.写出C或C++关于实现信道容量迭代计算法的代码。 3.写出在调试过程中出现的问题。 4.对实验的结果进行分析。 七、流程图 八、实验代码 #include<> #include #include<> usingnamespacestd; intmain() { . 实验五: 循环码编码 一、实验目的: 掌握通过计算机实现系统循环码编码 二、实验要求: 对于给定的消息序列,按照循环码编码的方法进行计算机实现. 三、实验基本原理 循环码的编码步骤: 循环码的系统码构造的步骤为: 1)消息多项式乘xn-k 2)xn-km(x)/g(x)=q(x)+r(x)/g(x) 其中: q(x)是商,r(x)是余数 3)C(x)=xn-km(x)+r(x) 四、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 编码 实验 报告 材料
![提示](https://static.bdocx.com/images/bang_tan.gif)