c语言中计算熵的函数,如何用c++编程实现各种信源熵的计算
算术编码图象数据压缩标准(如jpeg,jbig)扮演重角色.算术编码,消息01之间实数进行编码.算术编码两基本参数:符号概率它编码间隔.信源符号概率决定压缩编码效率,也决定编码过程信源符号间隔,而这些间隔包含01之间.编码过程间隔决定符号压缩后输出.
算术编码需输入符号,各符号概率还需编码符号序列,根据概率可算出初始编码间隔,先设几变量后面可:High——当前编码限,Low——当前编码限,high——间变量,计算编码符号当前间隔限,low——间变量,计算编码符号当前间隔限,d——当前间隔之间距离.第1编码符号当前间隔其初始编码间隔,第i编码符号当前间隔第i-1编码后[Low,High),第i+1编码符号当前间隔算法如:high=Low+d*第i+1初始编码符号应限,low=Low+d*第i+1编码符号应限,然后High=high,Low=low,d=d*第i编码符号概率.
编码程序如:
#include <iostream.h>
#define M 100
#define N 4
class suanshu
int count,length;
char number[N],n;
long double chance[N],c;
char code[M];
long double High,Low,high,low,d;
public:
suanshu()
{High=0;Low=0;}
void get_number();
void get_code();
void coding();
~suanshu(){}
void suanshu::get_number()
cout<<"please input the number and its chance."<<endl;
for(int i=0;i<N;i++)
cin>>n>>c;
number[i]=n;
chance[i]=c;
if(i==20)
cout<<"the number is full."<<endl;
count=i;
void suanshu::get_code()
cout<<"please input the code''s length:";
cin>>length;
while(length>=M)
cout<<"the length is too larger,please input a smaller one.";
cin>>length;
for(int i=0;i<length;i++)
cin>>code[i];
void suanshu::coding()
int i,j=0;
for(i=0;i<count;i++)
if(code[0]==number[i]) break;
while(j<i)
Low+=chance[j++];
d=chance[j];
High=Low+d;
for(i=1;i<length;i++)
for(j=0;j<count;j++)
if(code[i]==number[j])
if(j==0)
low=Low;
high=Low+chance[j]*d;
High=high;
d*=chance[j];
else
float chance_l=0.0;
for(int k=0;k<=j-1;k++)
chance_l+=chance[k];
low=Low+d*chance_l;
high=Low+d*(chance_l+chance[j]);
Low=low;
High=high;
d*=chance[j];
else continue;
cout<<"the result is:"<<Low<<endl;
int main()
suanshu a;
a.get_number();
a.get_code();
a.coding();
return 0;
本程序VC6.0XP专业版运行通过,这第次c++写比较完整程序,还些尽意方,比如变量函数命名太专业,后注重,慢慢也好.呵呵~
c语言中计算熵的函数,如何用c++编程实现各种信源熵的计算相关推荐
- c语言编译时间,C语言中关于时间的函数
C语言中关于时间的函数 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.下面我们一 ...
- 怎样设置一个函数C语言,C语言中怎样编写一个函数 如何在C语言中定义一个函数?...
如何在C语言中定义一个函数?小编很想在你面前流泪最后却还是选择装作打个哈欠 为什么小编怎么定义函数都不正确呢? 总是说小编 表达语法错误在main函数中 小编们可以在头文件与main函数之间定义,并编 ...
- C语言中连续调用rand函数,返回值不变
C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...
- bind merge r 和join_R语言中的数据合并函数(merge,cbind和rbind)的使用
R语言中的数据合并函数(merge,cbind和rbind)的使用-R语言中用cbind() 和rbind() 构建分块矩阵 1.merge函数 两个数据框拥有相同的时间或观测值,但这些列却不尽相同. ...
- 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )
文章目录 一.C 语言中的文件操作函数 二.磁盘与内存缓冲区 三.缓冲区工作机制 一.C 语言中的文件操作函数 读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本 ...
- f2py支持在fortran语言中调用其他Fortran函数或C代码或Python代码
f2py支持在fortran语言中调用其他Fortran函数或C代码或Python代码 分类: Python Numpy_Scipy fortran MinGW_GCC_Boost f2py 2012 ...
- 【示例】C语言中利用数组存放函数指针
C语言中利用数组存放函数指针,增加函数使用的灵活性.使用时只需提供数组索引,即可调用不同函数. 预备知识: 1.指向函数的指针 一个函数在编译时被分配一个入口地址,这个地址就被称为函数的指针. 例如: ...
- c语言 格式转换函数,C语言中的格式转换函数.doc
C语言中的格式转换函数 C语言中的格式转换函数 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过 ...
- C语言中的光标定位函数
C语言中的光标定位函数(将光标移动到屏幕的指定位置) 所谓的光标定位函数,就是实现键盘输入坐标值从而把鼠标的光标移动到相应坐标位置的函数模块,在简单的小游戏如贪吃蛇等需要定位输出的程序中有着较为广泛的 ...
- c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数
/*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...
最新文章
- 【jQuery】用jQuery给文本框添加只读属性【readOnly】
- linux如何查看系统架构?(查看系统架构命令)(armv7l)
- decode判断不为空拼接_空指针4月内部赛官方WP
- junit4使用心得
- postgresql表和列注释(描述)
- 怎么把此电脑放到桌面_Win10我的电脑怎么放到桌面
- python 延时_理解Python多线程5:加锁解决问题,但又带来麻烦!
- bl小说里面有个机器人管家_5G无人扫地机器人+进口吸扫一体机 杭州环卫工装备升级了...
- 正则表达式(一) -- 元字符(转)
- 程序默认在副屏显示_树莓派使用 OLED 屏显示图片及文字
- Android集成LAME库,实现pcm转mp3
- 1.2 网络爬虫分类
- uniapp小程序运行正常,app运行报cid unmatched at view.umd.min.js
- 官网webp转换工具cwebp简介
- MySQL 客户端安装
- 在前端培训班内该如何学习入门
- 搜一下导航完整程序源码
- Anaconda 安装python第三方库的各类方法
- java 线程亲缘性_线程的调度、优先级和亲缘性
- c语言炒股软件公式,20年的炒股实战公式让你认清股市本质 想不发财就难 源码放送 送给有缘人...
热门文章
- python下载安装教程
- 易语言怎么给手机发短信,对接验证码短信接口DEMO示例
- gps高斯utm_UTM投影分带计算与高斯投影分带计算
- IC卡防复制 设备联网 动态密钥方案说明 一卡通 门禁卡防破解Mifare卡低成本动态加密实现思路
- 计算机考研数学一大纲2016,2016考研大纲:计算机专业
- linux 文件目录对比,文件/目录对比:diff命令
- for linux pdf转mobi_下载安装Calibre在Linux CLI中将ePub文件转换为PDF格式
- C在mac上用不了malloc.h头文件的解决方法
- twitter最多关注者_Twitter的10个最具创意的用途
- pcb怎么画边框_PCB设计--PCB画图技巧