欢迎来到天天文库
浏览记录
ID:35210438
大小:379.00 KB
页数:21页
时间:2019-03-21
《信息论实验报告-》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、信息论实验报告学生:班级:学号:实验一香农编码一、程序设计的流程图开始输入N输入信源概率X(N)由大到小排序求累加概率累加概率转为二进制确定码长K[i]求码字输出码字结束二、程序清单#include#include#includeusingnamespacestd;voidswap(double*x,double*y);intmain(){intN;cout<<"输入信源个数"<>N;doubleS[N];//注意变量在数组中的影响cout<<"输入信源概率"<2、l;for(inti=0;i>S[i];for(inti=0;i3、M[N];for(inti=0;i1){MM[i]+='1';aa=tem-1;}else{MM[i]+='0';aa=tem;}}}stringBB[N];for(inti=0;i4、ap(double&x,double&y){doublea;a=x;x=y;y=a;}实验二.费洛编码.一、流程图开始输入信源个数n输入信源符号sing【i】输入信源符号概率平p【i】按p【i】从小到大排序N-1>=1?N调用fano()进行编码Y编码输出结束二、程序清单#include#include#includeusingnamespacestd;voiddw(intn,intH,intW,double*si,string*m);intmain(){intN;cout<<"输入信源个5、数"<>N;doubleS[N];cout<<"输入信源概率"<>S[i];for(inti=0;i6、,double*si,string*m){doublesum=0,sm=0;inta1=W-H;if(a1>=1){for(intj=H;j<=W;j++)sum+=*(si+j);doubleb[n];for(inti=H;i<=W;i++){sm+=*(si+i);b[i]=fabs(2*sm-sum)/sum;}intZH;doublea=b[H];for(inti=H;i<=W;i++)if(b[i]<=a){a=b[i];ZH=i;}for(inti=H;i<=W;i++){if(i<=ZH)m[i]+='0';elsem[i]+7、='1';}intnn=n;double*ss;ss=si;string*mm;mm=m;if(ZH==H)dw(nn,ZH+1,W,ss,mm);elseif(ZH==W-1)dw(nn,H,ZH,ss,mm);else{dw(nn,H,ZH,ss,mm);dw(nn,ZH+1,W,ss,mm);}}}实验三.霍夫曼开始一、程序流程图输入lettersStrcmp(“%是”,是)否是计算字符个数与出现次数I++输出letersI#include8、usingnamespacestd;structHNode{doubleweight;intparent;intlchild;intrchild;};voidHuffmanTre
2、l;for(inti=0;i>S[i];for(inti=0;i3、M[N];for(inti=0;i1){MM[i]+='1';aa=tem-1;}else{MM[i]+='0';aa=tem;}}}stringBB[N];for(inti=0;i4、ap(double&x,double&y){doublea;a=x;x=y;y=a;}实验二.费洛编码.一、流程图开始输入信源个数n输入信源符号sing【i】输入信源符号概率平p【i】按p【i】从小到大排序N-1>=1?N调用fano()进行编码Y编码输出结束二、程序清单#include#include#includeusingnamespacestd;voiddw(intn,intH,intW,double*si,string*m);intmain(){intN;cout<<"输入信源个5、数"<>N;doubleS[N];cout<<"输入信源概率"<>S[i];for(inti=0;i6、,double*si,string*m){doublesum=0,sm=0;inta1=W-H;if(a1>=1){for(intj=H;j<=W;j++)sum+=*(si+j);doubleb[n];for(inti=H;i<=W;i++){sm+=*(si+i);b[i]=fabs(2*sm-sum)/sum;}intZH;doublea=b[H];for(inti=H;i<=W;i++)if(b[i]<=a){a=b[i];ZH=i;}for(inti=H;i<=W;i++){if(i<=ZH)m[i]+='0';elsem[i]+7、='1';}intnn=n;double*ss;ss=si;string*mm;mm=m;if(ZH==H)dw(nn,ZH+1,W,ss,mm);elseif(ZH==W-1)dw(nn,H,ZH,ss,mm);else{dw(nn,H,ZH,ss,mm);dw(nn,ZH+1,W,ss,mm);}}}实验三.霍夫曼开始一、程序流程图输入lettersStrcmp(“%是”,是)否是计算字符个数与出现次数I++输出letersI#include8、usingnamespacestd;structHNode{doubleweight;intparent;intlchild;intrchild;};voidHuffmanTre
3、M[N];for(inti=0;i1){MM[i]+='1';aa=tem-1;}else{MM[i]+='0';aa=tem;}}}stringBB[N];for(inti=0;i4、ap(double&x,double&y){doublea;a=x;x=y;y=a;}实验二.费洛编码.一、流程图开始输入信源个数n输入信源符号sing【i】输入信源符号概率平p【i】按p【i】从小到大排序N-1>=1?N调用fano()进行编码Y编码输出结束二、程序清单#include#include#includeusingnamespacestd;voiddw(intn,intH,intW,double*si,string*m);intmain(){intN;cout<<"输入信源个5、数"<>N;doubleS[N];cout<<"输入信源概率"<>S[i];for(inti=0;i6、,double*si,string*m){doublesum=0,sm=0;inta1=W-H;if(a1>=1){for(intj=H;j<=W;j++)sum+=*(si+j);doubleb[n];for(inti=H;i<=W;i++){sm+=*(si+i);b[i]=fabs(2*sm-sum)/sum;}intZH;doublea=b[H];for(inti=H;i<=W;i++)if(b[i]<=a){a=b[i];ZH=i;}for(inti=H;i<=W;i++){if(i<=ZH)m[i]+='0';elsem[i]+7、='1';}intnn=n;double*ss;ss=si;string*mm;mm=m;if(ZH==H)dw(nn,ZH+1,W,ss,mm);elseif(ZH==W-1)dw(nn,H,ZH,ss,mm);else{dw(nn,H,ZH,ss,mm);dw(nn,ZH+1,W,ss,mm);}}}实验三.霍夫曼开始一、程序流程图输入lettersStrcmp(“%是”,是)否是计算字符个数与出现次数I++输出letersI#include8、usingnamespacestd;structHNode{doubleweight;intparent;intlchild;intrchild;};voidHuffmanTre
4、ap(double&x,double&y){doublea;a=x;x=y;y=a;}实验二.费洛编码.一、流程图开始输入信源个数n输入信源符号sing【i】输入信源符号概率平p【i】按p【i】从小到大排序N-1>=1?N调用fano()进行编码Y编码输出结束二、程序清单#include#include#includeusingnamespacestd;voiddw(intn,intH,intW,double*si,string*m);intmain(){intN;cout<<"输入信源个
5、数"<>N;doubleS[N];cout<<"输入信源概率"<>S[i];for(inti=0;i6、,double*si,string*m){doublesum=0,sm=0;inta1=W-H;if(a1>=1){for(intj=H;j<=W;j++)sum+=*(si+j);doubleb[n];for(inti=H;i<=W;i++){sm+=*(si+i);b[i]=fabs(2*sm-sum)/sum;}intZH;doublea=b[H];for(inti=H;i<=W;i++)if(b[i]<=a){a=b[i];ZH=i;}for(inti=H;i<=W;i++){if(i<=ZH)m[i]+='0';elsem[i]+7、='1';}intnn=n;double*ss;ss=si;string*mm;mm=m;if(ZH==H)dw(nn,ZH+1,W,ss,mm);elseif(ZH==W-1)dw(nn,H,ZH,ss,mm);else{dw(nn,H,ZH,ss,mm);dw(nn,ZH+1,W,ss,mm);}}}实验三.霍夫曼开始一、程序流程图输入lettersStrcmp(“%是”,是)否是计算字符个数与出现次数I++输出letersI#include8、usingnamespacestd;structHNode{doubleweight;intparent;intlchild;intrchild;};voidHuffmanTre
6、,double*si,string*m){doublesum=0,sm=0;inta1=W-H;if(a1>=1){for(intj=H;j<=W;j++)sum+=*(si+j);doubleb[n];for(inti=H;i<=W;i++){sm+=*(si+i);b[i]=fabs(2*sm-sum)/sum;}intZH;doublea=b[H];for(inti=H;i<=W;i++)if(b[i]<=a){a=b[i];ZH=i;}for(inti=H;i<=W;i++){if(i<=ZH)m[i]+='0';elsem[i]+
7、='1';}intnn=n;double*ss;ss=si;string*mm;mm=m;if(ZH==H)dw(nn,ZH+1,W,ss,mm);elseif(ZH==W-1)dw(nn,H,ZH,ss,mm);else{dw(nn,H,ZH,ss,mm);dw(nn,ZH+1,W,ss,mm);}}}实验三.霍夫曼开始一、程序流程图输入lettersStrcmp(“%是”,是)否是计算字符个数与出现次数I++输出letersI#include
8、usingnamespacestd;structHNode{doubleweight;intparent;intlchild;intrchild;};voidHuffmanTre
此文档下载收益归作者所有