信息论上机实验.docx
- 文档编号:2853085
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:21
- 大小:186.12KB
信息论上机实验.docx
《信息论上机实验.docx》由会员分享,可在线阅读,更多相关《信息论上机实验.docx(21页珍藏版)》请在冰豆网上搜索。
信息论上机实验
信道容量的迭代算法:
#include
#include
#include
#include
#include
#defineDELTA1e-6/*delta阈值*/
floatlog2(floatx)
{
returnlog(x)/log
(2);
}
intmain(void)
{
registerinti,j;
registerintk;
intr,s;
float*p_i=NULL;
float**p_ji=NULL;
float**phi_ij=NULL;
floatC,C_pre,validate;
float*sum=NULL;
floatp_j;
fscanf(stdin,"%d",&r);
fscanf(stdin,"%d",&s);
p_i=(float*)calloc(r,sizeof(float));
p_ji=(float**)calloc(r,sizeof(float));
for(i=0;i p_ji[i]=(float*)calloc(s,sizeof(float)); phi_ij=(float**)calloc(r,sizeof(float*)); for(i=0;i phi_ij[i]=(float*)calloc(s,sizeof(float)); for(i=0;i for(j=0;j fscanf(stdin,"%f",&p_ji[i][j]); for(i=0;i { validate=0.0; for(j=0;j { validate+=p_ji[i][j]; } if(fabs(validate-1.0)>DELTA) { fprintf(stdout,"invalidinputdata.\n"); exit(-1); } } fprintf(stdout,"Starting...\n"); for(i=0;i p_i[i]=1.0/(float)r; C=-MAXFLOAT; k=0; sum=(float*)calloc(r,sizeof(float)); do { k++; for(j=0;j { p_j=0.0; for(i=0;i p_j+=p_i[i]*p_ji[i][j]; if(fabs(p_j)>=DELTA) for(i=0;i { phi_ij[i][j]=p_i[i]*p_ji[i][j]/p_j; } else for(i=0;i phi_ij[i][j]=0.0; } p_j=0.0; for(i=0;i { sum[i]=0.0; for(j=0;j { if(fabs(phi_ij[i][j])>=DELTA) sum[i]+=p_ji[i][j]*log2(phi_ij[i][j])/log2(2.0); } sum[i]=pow(2.0,sum[i]); p_j+=sum[i]; } for(i=0;i p_i[i]=sum[i]/p_j; C_pre=C; C=log2(p_j)/log2(2.0); } while(fabs(C-C_pre)/C>DELTA); free(sum); sum=NULL; fprintf(stdout,"Theiterationnumberis%d.\n\n",k); fprintf(stdout,"Thecapacityofchannelis%.6fbit/symbol.\n\n",C); fprintf(stdout,"Thebestinputprobabilitydistributionis: \n"); for(i=0;i fprintf(stdout,"%.6f",p_i[i]); fprintf(stdout,"\n"); for(i=s-1;i>=0;i--) { free(phi_ij[i]); phi_ij[i]=NULL; } free(phi_ij); phi_ij=NULL; for(i=r-1;i>=0;i--) { free(p_ji[i]); p_ji[i]=NULL; } free(p_ji); p_ji=NULL; free(p_i); p_i=NULL; free(p_i); p_i=NULL; exit(0); } 唯一可译码判决准则 #include #include #include structstrings { char*string; structstrings*next; }; structstringsFstr,*Fh,*FP; //输出当前集合 voidoutputstr(strings*str) { do { cout< str=str->next; }while(str); cout< } inlineintMIN(inta,intb) {returna>b? b: a;} inlineintMAX(inta,intb) {returna>b? a: b;} #definelength_a(strlen(CP)) #definelength_b(strlen(tempPtr)) //判断一个码是否在一个码集合中,在则返回0,不在返回1 intcomparing(strings*st_string,char*code) { while(st_string->next) { st_string=st_string->next; if(! strcmp(st_string->string,code)) return0; } return1; } //判断两个码字是否一个是另一个的前缀,如果是则生成后缀码 voidhouzhui(char*CP,char*tempPtr) { if(! strcmp(CP,tempPtr)) { cout<<"集合C和集合F中有相同码字: "< < <<"不是唯一可译码码组! "< exit (1); } if(! strncmp(CP,tempPtr,MIN(length_a,length_b))) { structstrings*cp_temp; cp_temp=new(structstrings); cp_temp->next=NULL; cp_temp->string=newchar[abs(length_a-length_b)+1]; char*longstr; longstr=(length_a>length_b? CP: tempPtr);//将长度长的码赋给longstr //取出后缀 for(intk=MIN(length_a,length_b);k cp_temp->string[k-MIN(length_a,length_b)]=longstr[k]; cp_temp->string[abs(length_a-length_b)]=NULL; //判断新生成的后缀码是否已在集合F里,不在则加入F集合 if(comparing(Fh,cp_temp->string)) { FP->next=cp_temp; FP=FP->next; } } } voidmain() { //功能提示和程序初始化准备 cout<<"\t\t唯一可译码的判断! \n"< structstringsCstr,*Ch,*CP,*tempPtr; Ch=&Cstr; CP=Ch; Fh=&Fstr; FP=Fh; charc[]="C: "; Ch->string=newchar[strlen(c)]; strcpy(Ch->string,c); Ch->next=NULL; charf[]="F: "; Fh->string=newchar[strlen(f)]; strcpy(Fh->string,f); Fh->next=NULL; //输入待检测码的个数 intCnum; cout<<"输入待检测码的个数: "; cin>>Cnum; cout<<"输入待检测码"< for(inti=0;i { cout< "; chartempstr[10]; cin>>tempstr; CP->next=new(structstrings); CP=CP->next; CP->string=newchar[strlen(tempstr)]; strcpy(CP->string,tempstr); CP->next=NULL; } outputstr(Ch); CP=Ch; while(CP->next->next) { CP=CP->next; tempPtr=CP; do { tempPtr=tempPtr->next; houzhui(CP->string,tempPtr->string); }while(tempPtr->next); } outputstr(Fh); structstrings*Fbegin,*Fend; Fend=Fh; while (1) { if(Fend==FP) { cout<<"是唯一可译码码组! "< exit (1); } Fbegin=Fend; Fend=FP; CP=Ch; while(CP->next) { CP=CP->next; tempPtr=Fbegin; for(;;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 上机 实验