資源簡介
信息論的課程設計,算術編碼,輸入信源符號和相應的概率,輸入要編碼的序列,可以得出編碼結果,順便直接譯碼。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include??
char?code[100];
double?ps=1;
double?d=0;
double?HighLowlowhigh;
int?n;
int?l;
char?code_1[100];
char?code_2[100];
double?k;
struct?MY
{
????char?my;
float?p;
}myfh[5];
/*double?verse()
{
??double?m;
??double?tem;
??while(code_1[i]!=‘\0‘)
??{
tem=code_1[i]-48;
for(j=0;j tem=tem*0.5;
m=m+tem;
}
return?m;
}*/
float?FS(int?i)
{
float?fs=0;
if(i==0)fs=0;
????for(int?j=0;j fs+=myfh[j].p;
return?fs;
}
void?decode(double?k)
{
// k=verse();
double?D;
int?j=0;
int?i=1;
while(1)
{
if?(k<=FS(j)+myfh[j].p&&k>=FS(j))break;
j++;
}
Low=FS(j);
High=Low+myfh[j].p;
d=myfh[j].p;
code_2[0]=myfh[j].my;
j=0;
while?(k!=Low&&j {
while(j {
high=Low+d*(FS(j)+myfh[j].p);
low=Low+d*FS(j);
D=d*myfh[j].p;
j++;
if(k=low)break;
}
code_2[i]=myfh[j-1].my;
High=high;
Low=low;
d=D;
j=0;
i++;
}
}
void?reverse(double?m?int?l)?
{?
//轉小數部分?
int?temi=0;
while(m&&l)?
{?
tem=int(m*2);
code_1[i]=tem+48;?
m?=?m*2?-?int(m*2);?
l--;
i++;
}
code_1[i]=‘\0‘;
}?
void?PS()
{
int?i=0j=0;
????while(code[i]!=0)
{
for(j=0;j {
if(code[i]==myfh[j].my)
ps*=myfh[j].p;
}
i++;
}
}
void?length()
{
PS();
l=ceil(log10(1/ps)/log10(2));
}
void?encode()
{
int?i=1;int?j;
for?(j=0;j {
if(code[0]==myfh[j].my)
{
Low=FS(j);
High=Low+myfh[j].p;
d=myfh[j].p;
}
}
while(code[i]!=10)
{
for?(j=0;j {
if(code[i]==myfh[j].my)
{
high=Low+d*(FS(j)+myfh[j].p);
low=Low+d*FS(j);
High=high;
Low=low;
d=d*myfh[j].p;
}
}
i++;
}
}
void?main()
{
int?i;
printf(“請輸入碼元符號的個數:\n“);
scanf(“%d“&n);
for(i=0;i {
printf(“請輸入碼元符號:\n“);
getchar();
scanf(“%c“&myfh[i].my);
printf(“請輸入碼元符號的概率:\n“);
scanf(“%f“&myfh[i].p);
}
printf(“請輸入要編碼的序列:\n“);
scanf(“%s“code);
encode();
printf(“the?range?is?(%.8f??????%.8f)??\n“LowHigh);
length();
reverse(Lowl);
????printf(“%s“code_1);
decode(Low);
printf(“the?decoded?result?is?:\n“);
printf(“%s“code_2);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????34304??2006-12-25?22:31??算術編碼\信息論與編碼實驗三.doc
?????文件???????2411??2008-12-17?02:45??算術編碼\算術編碼.cpp
?????目錄??????????0??2008-12-19?19:06??算術編碼
-----------?---------??----------?-----??----
????????????????36715????????????????????3
- 上一篇:人臉識別方法的設計與實現論文答辯ppt
- 下一篇:stm32內部結構圖
評論
共有 條評論