资源简介
三个信源的自适应算术编码,c++编写,内附算法说明
代码片段和文件信息
#include
#include
#include
using namespace std;
void main()
{
double per[3]={1.0/31.0/31.0/3};
char str[21];
string chr;
char *p;
cout<<“三信源自适应算术编码“< cout<<“输入0~2数字长度<=20:“< cin>>str;
p=str;
int i=0k=1;
int count[3]={111};
double store;
double total=3.0output=0.0l=0.0;
double begin_interval=0.0end_interval=0.0;
double temp1_interval=0.0temp2_interval=0.0;
for(;*p!=‘\0‘;p++k++)
{
if(*p>=‘0‘ && *p<=‘9‘)
{
//取当前的区间的左右区间界限
if(k==1)
{
for(i=0;i<(*p-‘0‘);i++)
begin_interval +=per[i];
if(*(p+1)==‘\0‘)
cout<<“[“< }
else
{
for(i=0;i<(*p-‘0‘);i++)
temp1_interval +=per[i];
begin_interval=temp1_interval+begin_interval;//涉及到上一次的边界值
}
temp1_interval=0.0;
end_interval=begin_interval+per[(*p-‘0‘)];
store=per[(*p-‘0‘)];//存储上一次的概率值
//重新分配所有符号概率
total++;//总数加1
for(i=0;i<3;i++)
per[i]=count[i]/(total);//先给所有符号赋值总数加1的符号概率
count[(*p-‘0‘)]=count[(*p-‘0‘)]+1;//被选中的符号的次数加1
per[(*p-‘0‘)]=count[(*p-‘0‘)]/total;//矫正p指向符号的概率
//重新分配当前区间的符号概率
for(i=0;i<3;i++)
per[i]=store*per[i];
if(*(p+2)==‘\0‘)
{
for(i=0;i<(*(p+1)-‘0‘);i++)
temp2_interval +=per[i];
output=temp2_interval+begin_interval;
cout<<“区间分配:“< cout<<“[“<
//output=0.64;
l=log(1/per[(*(p+1)-‘0‘)])/log(2);
cout<<“编码长度:“<<(int)l<
for(i=0;i<(int)l;i++)
{
output=output*2;
if(output>1)
{
chr +=“1“;
output=output-1;
}
else
chr +=“0“;
}
cout<<“编码:“<
break;
}
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-12-03 16:23 Arithmetic_cmd\
文件 398848 2013-12-03 16:29 Arithmetic_cmd\11.26_自适应算术编码.ppt
文件 2006 2013-12-03 16:27 Arithmetic_cmd\Arithmetic.cpp
文件 4376 2013-11-26 21:40 Arithmetic_cmd\Arithmetic_cmd.dsp
文件 553 2013-11-26 19:59 Arithmetic_cmd\Arithmetic_cmd.dsw
文件 41984 2013-12-03 16:27 Arithmetic_cmd\Arithmetic_cmd.ncb
文件 430592 2013-12-03 16:27 Arithmetic_cmd\Arithmetic_cmd.opt
文件 923 2013-12-03 16:26 Arithmetic_cmd\Arithmetic_cmd.plg
目录 0 2013-12-03 16:23 Arithmetic_cmd\Debug\
文件 191035 2013-12-03 16:26 Arithmetic_cmd\Debug\Arithmetic.obj
文件 565349 2013-12-03 16:26 Arithmetic_cmd\Debug\Arithmetic_cmd.exe
文件 799320 2013-12-03 16:26 Arithmetic_cmd\Debug\Arithmetic_cmd.ilk
文件 2079348 2013-12-03 16:24 Arithmetic_cmd\Debug\Arithmetic_cmd.pch
文件 1098752 2013-12-03 16:26 Arithmetic_cmd\Debug\Arithmetic_cmd.pdb
文件 99328 2013-12-03 16:26 Arithmetic_cmd\Debug\vc60.idb
文件 118784 2013-12-03 16:26 Arithmetic_cmd\Debug\vc60.pdb
评论
共有 条评论