费诺编码

功能简介:首先输入信源符号的个数,然后输入各个信源符号的概率。(概率之和等于1)

主程序:   李松林

#include<stdio.h>      湖北师范学院

#include<math.h>

#define G 20

int function1(int c,int M);

void function2(int c,int num1,int M,int cs);

void function3(int c,int M);

float a[G]={0},tmp=0,m[G]={0},k=0,H=0,num[G]={0},sum1=0,sum2=0;

int K[G]={0},i,j,N,s[G][G],c,cs=0,num1=0,ks[G],zj[G],zh[G];

void main()

{

loop:printf("请输入信源符号个数N:");

scanf("%d",&N);

for(i=0;i<N;i++)

{

scanf("%f",&a[i]);

tmp+=a[i];

}

if(tmp<0.9999||tmp>1.0001)

{

printf("输入的数据不符合要求,请重新输入\n");

tmp=0;

goto loop;

}

else

{

for(i=0;i<N-1;i++)

for(j=i+1;j<N;j++)

{

if(a[i]<a[j])  //从大到小排序

{

tmp=a[i];

a[i]=a[j];

a[j]=tmp;

}

}

for(i=0;i<N;i++)

{

m[i]=-log10(a[i])/log10(2.0);//求出-log p(ai)并保存在数组m里

}

/

function3(0,N);

for(i=0;i<N;i++)

{

H+=a[i]*m[i];//求信源熵

k+=a[i]*K[i];//平均码长

}

printf("信源消息符号ai  符号概率p(ai)    码长Ki      二元码字\n");

for(i=0;i<N;i++)

{

printf("     a%d           %-4.2f              %d           ",i+1,a[i],K[i]);

for(j=0;j<K[i];j++)

printf("%d",s[i][j]);

printf("\n");

}

printf("信源熵H=%5.3f bit/符号    费诺码的平均码长k=%5.3f 码元/符号    编码效率n=%4.1f%% \n",H,k,100*(H/k));

}

}

int function1(int c,int M)//求出分界点

{

int d=c;

for(i=c;i<M-1;i++)

{

for(j=c;j<i+1;j++)

sum1+=a[j];

for(j=i+1;j<M;j++)

sum2+=a[j];

num[i]=fabs(sum1-sum2);//取绝对值

sum1=0;

sum2=0;

}

for(i=c;i<M-1;i++)

{

if(num[d]>num[i])

d=i;

}

d+=1;

return d;

}

void function2(int c,int num1,int M,int cs)//进行分组并计算码长、码字

{

for(i=c;i<num1;i++)

{

s[i][cs]=0;

K[i]+=1;

}

for(j=num1;j<M;j++)

{

s[j][cs]=1;

K[j]+=1;

}

}

void function3(int c,int M)

{

num1=function1(c,M);

function2(c,num1,M,cs);

ks[cs]=c;

zj[cs]=num1;

zh[cs]=M;

cs++;

if((zj[cs-1]-ks[cs-1])>1)

{

function3(ks[cs-1],zj[cs-1]);

}

if((zh[cs-1]-zj[cs-1])>1)

{

function3(zj[cs-1],zh[cs-1]);

}

cs--;

}

第一次输入:6   0.32  0.22  0.18  0.16  0.08  0.04

结果:

第二次输入:7   0.20  0.19  0.18  0.17  0.15  0.10  0.01

结果:

第三次输入:8   0.1   0.18  0.4   0.05  0.06  0.1   0.07  0.04

结果:

费诺编码C程序及演示结果相关推荐

  1. 用MATLAB实现费诺编码

    一.简述 <信息论与编码>是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充.其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能, ...

  2. java实现.费诺编码_使用递归算法编写的费诺编码

    内容与设计思想 按照教材方式建立数据成员变量.设有离散无记忆信源X,P(X).二进制费诺编码为:1.将信源符号按概率从大到小的顺序排列2.将信源分成两组――按两组概率之差为最小分.3.上面一组编码为0 ...

  3. 费诺码设计matlab,费诺编码的matlab实现.doc

    费诺编码的matlab实现.doc 多媒体技术实验报告学院:城南学院 姓名:学号:指导老师:尹波时间:2015年11月25日 教师评语:成绩 评阅教师 日期 实验一:费诺编码的matlab实现1实验目 ...

  4. 信源编码算法(费诺编码哈夫曼编码)

    信源编码算法 费诺编码 Fano coding 哈夫曼编码 Huffman coding 费诺编码 编码步骤 将信源符号按照其概率大小,从大到小排列: 将这一组信源符号分成概率之和尽可能接近或者相等的 ...

  5. 信源编码的代码实现 (香农编码、费诺编码、哈夫曼编码、游程编码、算术编码)

    文章目录 香农编码 费诺编码 哈夫曼编码 C++版 C语言版 游程编码 算术编码 香农编码 (1) 将信源消息符号按其出现的概率大小依次排列 p1 ≥ p2 ≥ - ≥ pn (2) 确定满足下列不等 ...

  6. java费诺编码_费诺编码的分析与实现.doc

    费诺编码的分析与实现 吉林建筑大学 电气与电子信息工程学院 设计题目: 费诺编码的分析与实现 专业班级: 电子信息工程 111 学生姓名: 马 超 学 号: 指导教师: 吕卅 王超 设计时间: 201 ...

  7. 香农费诺编码 c语言实现,对于香农编码、费诺编码和哈夫曼编码,编码方法惟一的是()。...

    问题标题 对于香农编码.费诺编码和哈夫曼编码,编码方法惟一的是(). 2019-8-15来自ip:15.170.14.227的网友咨询 浏览量:533 手机版 问题补充: 题目类型:[填空题] 对于香 ...

  8. 费诺编码 c++代码实现 信息论实验

    费诺编码 1.实验目的 (1)进一步熟悉费诺编码过程: (2)掌握Matlab 或C语言递归程序的设计和调试技术 2.实验要求 (1)输入:信源符号个数 ,每个信源符号的概率分布P从键盘输入 (2)输 ...

  9. 费诺编码实验报告c语言,信息论编码实验报告费诺编码附源代码..doc

    信息论编码实验报告费诺编码附源代码. 中南大学 信息论与编码实验报告 选 题: 费诺编码 学生姓名: 学 号: 专业班级: 通信工程 指导老师: 学 院: 信息科学与工程学院 时 间: 2015 目录 ...

最新文章

  1. web程序前后台功能实现_微信定制开发、小程序定制开发可以实现哪些功能?
  2. 2.12 向量化更多例子-深度学习-Stanford吴恩达教授
  3. SpringMVC的Controller方法返回值
  4. c语言程序设计开封电大,最新电大《C语言程序设计》题库及答案.docx
  5. linux 定时备份mysql数据库
  6. 我帮公司财务写了个“群发工资条”的Python脚本!
  7. azure kinect三维点云_【干货】三维重建技术综述
  8. (35)FPGA原语设计(BUFGCTRL)
  9. php size(),PHP filesize() 函数
  10. mysql 游标的用途及使用方法
  11. 2017《JAVA》预备作业 计科1501班 王奕开
  12. 苹果绕过ID_三分钟教你绕过苹果ID锁,救你的板砖。-海绵宝宝的蟹黄堡
  13. python牛顿迭代法求方程的根_python实现迭代法求方程组的根过程解析
  14. 淘宝运营,新链接和老连接如何做搜索,有什么区别?
  15. linux系统读移动硬盘,在linux系统上识别与挂载移动硬盘数据
  16. 在Win10下 用 Powershell 或 CMD 完成文件的 MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512 等哈希校验
  17. 易语言调用子程序_ c,易语言汇编调用子程序源码
  18. vue调倍速后声音变了_pr加速人声后声音变调失真怎么办?
  19. 计算机网络实验 —— 验证性实验
  20. 阿里云AMD服务器计算型实例规格族c6a实例CPU网络收发包云盘IOPS详解

热门文章

  1. 【BZOJ2844】albus就是要第一个出场——线性基
  2. 2020江苏选调考察体检环节的记录
  3. 热带雨林绘画软件测试,手绘教程!手把手教你绘制光影超棒的热带雨林插画
  4. 专访今目标李雪:行业分化愈加明显 专业的公司做专业的事情
  5. Beautiful Soup的使用
  6. 请教DELPHI问题...
  7. 《Python How to Program》读书笔记
  8. 【RO】Robust formulation controls higher moments
  9. Lucas–Kanade算法
  10. 剑指offer 专项突破版 78、合并排序链表