自适应算术编码的程序

信息论与编码

/******************自适应模式算术编码 **********************/

#include<math.h>

#include<string.h>

#include<stdio.h>

double proc[]={0.10,0.10,0.10,0.10,0.10,0.10,0.10,0.10,0.10,0.10};

int Num[10]={1,1,1,1,1,1,1,1,1,1};

double result,areaBegin,areaEnd;

int cord[1000],cordLength;

char str[1000];

int strLength=0;

bool readdat()

{

printf("*********** 自适应模式算术编码 ***********\n");

printf("请输入字符串(0--9): \n");

scanf("%s",str);

while(str[strLength]!='\0')

strLength++;

for(int i=0;i<strLength;i++) //输入是否合法

if(str[i]>'9' || str[i]<'0') return 1;

return 0;

}

void encord()

{

int sum=10;

int i;

printf(" 编 码 :");

double w=0.0,len;

areaBegin=0.0,areaEnd=1.0;

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

{

int n=str[i]-'0',k; w=0.0;

for(k=0;k<n;k++) w += proc[k]; //计算所在区间

len=areaEnd-areaBegin; //计算新的区间

areaEnd = areaBegin+len*(w+proc[k]);

areaBegin += len*w;

Num[n]++;

sum++;

for(int l=0;l<10;l++)

{

proc[l]=Num[l]/double(sum);

}

你可能喜欢

  • 信息与编码
  • 信息编码
  • c++经典代码大全
  • 图像分割论文
  • 信息报告
  • 数据算法

自适应算术编码的程序相关文档

最新文档

返回顶部