- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息论与编码上机作业
二进制Fano编码
姓名: 学号: 班级:
题目要求
已知:信源符号个数 q、信源符号 s0,...,sq?1、信源概率分布 p0,...,pq?1。
算法:
(a) 将 q 个信源符号按其概率递减排序: p0 ≥ p1 ≥ ... ≥ pq?1
(b) 将依次排列的信源符号依概率分为两组,使两组的概率和之差最小。 并对各组分别赋予二进制码符号 “0” 和 “1”。
(c) 将每一组的信源符号进一步再分成两组,使划分后的两个组的概率 和之差最小。再次分别赋予各组二进制码符号 “0” 和 “1”。
(d) 如此重复,直至每组只剩下一个信源符号为止。
(e) 信源符号 si 所对应的从左至右的码符号序列即为码字 wi。
要求:
(a) 输入:信源符号个数 q,信源概率分布 p0,...,pq?1。
(b) 输出:信源符号 si 与码字 wi 的对应关系表(编码表)。
输入信源符号个数程序运行流程
输入信源符号个数
是否是
是否是
是否是正整数
NYNNYYY是否是是否在0至1之间是否是概率和是否为1 降序排序费诺编码输出结果
N
Y
N
N
Y
Y
Y
是否是
是否在0至1之间
是否是
概率和是否为1
降序排序
费诺编码
输出结果
输入信源符号概率
费诺编码流程图
输入信源符号个数
输入信源符号个数num,和对应概率p
降序排列
降序排列
N是否是
N
是否是
信源个数大于
信源个数大于2?
通过求和累加确定分组后每组概率和尽可能相近
通过求和累加确定分组后每组概率和尽可能相近
NNYYY是否是分组点即该组倒数第二个?分组点为新分组的最后一个编号,其他不变分组点位新分组的第一个编号,其他依次第一组码字加0,第二组码字加1
N
N
Y
Y
Y
是否是
分组点即该组倒数第二个?
分组点为新分组的最后一个编号,其他不变
分组点位新分组的第一个编号,其他依次
第一组码字加0,第二组码字加1
以分组点为断点,重新编号分为两组是否
以分组点为断点,重新编号分为两组
是否是
分组点即第一个编号?
输
输出信源符号,概率和码字
运行结果
正确结果:
错误提示:
代码及注释
#includestdio.h??
#includestring.h??
#includestdlib.h??
#includemath.h??
??
int?num1;??//费诺编码中使用的信源符号个数
char?code[50][50];//费诺编码???
int?flag1=0;//是否已经编码???
??
void?main()??
{??
????int?num;//信源符号个数???
????float?p[50];//信源符号的概率???
????float?sum=0.0;//概率之和???
????float?temp;//排序所使用的中间变量???
????int?i,j;??
????int?flag=0;//是否已经输入完毕概率???
????int?err1=0,err2=0;//错误类型???
????void?err(int?e1,?int?e2);//错误函数???
????void?fano(int?m,int?n,float?p[50]);//费诺编码???
??
????printf(\n---------------费诺编码----------------\n\n输入信源符号个数和概率可以得到费诺编码。\n);??
????do??
????{??
????????printf(\n\n请输入信源符号个数(输入0退出):);??
????????scanf(%d,num);??
????????if(num==0)?exit(0);??
????????while(num0)??
????????{??
????????????printf(请重新输入一个正整数!\n);??
????????????printf(请输入信源符号个数:);??
????????????scanf(%d,num);??
????????????if(num==0)?exit(0);??
????????}??
????????while(flag==0)??
????????{??
????????????flag=1;??
????????????printf(请输入信源概率:);??
????????????for(i=1;inum+1;i++)//输入概率???
????????????{??
????????????????scanf(%f,p[i]);??
????????????????if((p[i]0)||(p[i]1))?//检查错误:概率取值0至1??
????????????????{??
您可能关注的文档
最近下载
- 小升初英语预科七年级上册练习《阅读理解题》.docx VIP
- 人教版小学二年级下册数学精品教学课件 第二单元 表内除法(一) 2.1.7 练习三.ppt
- 行政听证程序培训课件.pptx VIP
- 客舱安全管理与应急处置196.pptx VIP
- 津津有味·读经典Level1《怪医杜立德》译文和答案.docx
- 高中英语2025届高考高频词汇(共 688个 ).doc
- 会计职称考试初级会计实务真题附答案.docx VIP
- 2025年全年考勤表(2025年考勤 含2025年日历表).pdf
- 古诗词诵读《桂枝香金陵怀古》课件 (共42张PPT)2025年统编版高中语文必修下册.pptx VIP
- 消防员考试:消防监控上岗证找答案.docx VIP
文档评论(0)