Shannon 编码
1.实验目的
(1)进一步熟悉Shannon 编码过程;
(2)掌握C语言程序设计和调试过程中数值的进制转换,数值与字符串之间的转换等技术。

2.实验要求
(1)输入:信源符号个数 ,每个信源符号的概率分布P从键盘输入
(2)输出:每个信源符号对应的Shannon 编码的码字
(3)源程序格式整齐清晰,注释简单明了。
3.c++程序

#include<iostream>
#include<vector>
#include<string>
#include <math.h>using namespace std;int main(){cout<<"请输入信源符号个数:"<<endl;int n;cin>>n;cout<<"请输入符号分布概率"<<endl;vector<float> p,p1;vector<int> l;float s=0;for(int i=0;i<n;i++){p1.push_back (s);float a;cin>>a;double b=-log(a)/log(2);l.push_back((int)b+1);p.push_back(a);s+=a;}for(int j=0;j<n;j++){string str="";float c=p1[j];for(int k=0;k<l[j];k++){if(c*2<1){str+="0";c=c*2;}else{str+="1";c=c*2-1;}}cout<<"第"<<i<<"个信源符号的二元码是:"<<str<<endl;}return 0;
}

4.运行截图

Shannon 香农编码 信息论实验 c++相关推荐

  1. 信息论与编码matlab实验报告,信息论实验报告(实验三、香农编码)

    <信息论实验报告(实验三.香农编码)>由会员分享,可在线阅读,更多相关<信息论实验报告(实验三.香农编码)(3页珍藏版)>请在人人文库网上搜索. 1.学生实验报告院别电子工程学 ...

  2. 实验三-香农编码的MATLAB实现

    信息论编码实验3~9连载,更多看专栏. 香农编码仿真实现 一.香农编码的原理 二.香农编码实例 三.程序及流程图 四.程序运行结果 五.程序自评价 一.香农编码的原理 香农码严格意义上来说不是最佳码, ...

  3. 香农编码二叉树c语言,shannon码的编码实验总结.docx

    shannon码的编码实验总结 本科生实验报告 实验课程信息理论与编码 学院名称信息科学与技术学院 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年九月----二〇一六年十一月 ...

  4. 天津理工大学 信息论与编码实验3 离散信源编码-香农编码

    一.实验目的 离散无记忆信源是一种最简单且最重要的信源,可以用完备的离散型概率空间来描述.本实验通过对给定的信源的进行相应的编码,加深对离散无记忆信源的无失真编码的理解. 掌握香农编码原理: 二.实验 ...

  5. 计算信源熵和香农编码C语言,信息论与编码课程设计报告-统计信源熵与香农编码.pdf...

    信息论与编码课程设计报告 设计题目: 统计信源熵与香农编码 专业班级 电 信 12-06 学 号 学生姓名 指导教师 教师评分 2015 年 3 月 30 日 目 录 - 0 - 一.设计任务与要求 ...

  6. 信息论与编码|香农编码的Matlab实现

    1. 香农编码原理 (1)将信源消息符号按其出现的概率大小依次降序排列为: (2)对概率向上取整求整数码长K (3)为了编成唯一可译码,计算第i个消息的累加概率P (4)将累加概率转换成二进制数 (5 ...

  7. 信息论与编码-python实现三种编码(香农编码,费诺编码,赫夫曼编码)

    香农编码,费诺编码,赫夫曼编码(python实现) 开始参考了网上其他人的代码,但后来都发现要么代码有错误,要么输出结果不符合自己的预期,于是就重新实现了一下,代码仍存在一些小问题,但是能够满足作业要 ...

  8. 香农编码与Huffman编码之间的对比

    目录 一.[上机目的] 二.[环境] 三.[上机原理] 四.[上机内容] 五.设计思路 5.1霍夫曼编码特点 5.2霍夫曼编码原理 5.3二进制哈夫曼编码过程 5.4计算结果 5.5霍夫曼编码的MAT ...

  9. 香农编码的C++实现及求平均码长和编码效率

    香农编码C++分布实现 编码步骤 香农编码的步骤如下: (1)将信源符号按其出现概率从大到小排序: (2)计算出各概率对应的码字长度: (3)计算累加概率: (4)把各个累加概率由十进制转化为二进制, ...

最新文章

  1. Linux下__attribute__((visibility (default)))的使用
  2. java 线程同步的方法_Java多线程同步方法
  3. C/Cpp / 设计模式 / 简单工厂模式
  4. WPF 重要新概念读书笔记(转)
  5. 解决IDEA修改已有项目为maven项目时目录结构被改变的问题
  6. 关于varchar2在pl/sql和schema级别的最大值
  7. 光模块组装过程中常见问题分析及解决方法
  8. python编程是啥-什么是Python编程课程
  9. 提升效率小工具,我用30分钟就干完一天的活
  10. 用javascript获取屏幕高度和宽度等信息
  11. win7录屏_专业电脑录屏方法有哪些?分享录屏靠谱方法!
  12. (Modern Family S01E03) Part4  PhilClaire  Gloria和Luke到Claire家玩 Claire和Luke谈心
  13. Linux中write函数
  14. [转载]C++URL编码转换
  15. 【Java】9、Java IO 流
  16. 赔97.6万元!腾讯一程序员违反竞业协议,三年白干了!
  17. 【程序猿的黑科技】一些有趣且有用的的工具整理
  18. Mybatis的插件 PageHelper 分页查询使用方法
  19. UDS刷写上位机全套CAPL脚本,有简单panel界面
  20. 2022-08-11 乐理知识(八) 和弦——什么是和弦,三和弦,三和弦的转位,七和弦,七和弦的转位

热门文章

  1. LeetCode994 Rotting Oranges解题方案
  2. SpringBoot整合Jbpm4(一)
  3. SQlServer的日期相减(间隔)dateadd ,datediff 函数
  4. fflush(stdout)作用
  5. opencv中waitKey()的作用
  6. 游戏模型:不是天生,不用PS,3DMax教你怎么拥有长长的睫毛
  7. nginx $1,2,3的含义
  8. 成都软通动力的的OFFER
  9. warmup_csaw_2016
  10. KMSpico无法安装问题解决