• 大小: 1.45MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-29
  • 语言: C/C++
  • 标签:

资源简介

三个信源的自适应算术编码,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

评论

共有 条评论