




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息論實驗報告學生: 班級:學號:實驗一 香農(nóng)編碼一、 程序設(shè)計的流程圖開始 輸入N輸入信源概率X(N)由大到小排序求累加概率累加概率轉(zhuǎn)為二進制確定碼長Ki求碼字輸出碼字結(jié)束二、程序清單#include #include#includeusing namespace std;void swap(double *x,double *y);int main() int N; cout輸入信源個數(shù)N; double SN; /注意變量在數(shù)組中的影響 cout輸入信源概率endl; for(int i=0;iSi; for(int i=0;iN;i+) for(int j=i;jN;j+) if(Si
2、Sj) swap(Si,Sj); int nmN; for(int i=0;iN;i+) nmi=int(-(log(Si)/log(2)+1; if(nmi=(-(log(Si)/log(2)+1) nmi-; double AAN; AA0=S0; for(int i=1;iN;i+ ) AAi=AAi-1+Si; string MMN; for(int i=0;iN;i+) double tem=0; double aa=AAi; for(int j=0;j1) MMi+=1; aa=tem-1; else MMi+=0; aa=tem; string BBN; for(int i=0;
3、iN;i+) for(int j=0;jnmi;j+) BBi+=MMij; cout輸出編碼endl; for(int i=0;iN;i+) coutBBi=1? N調(diào)用fano()進行編碼 Y編碼輸出結(jié)束二、程序清單#include #include#includeusing namespace std;void dw(int n,int H,int W,double *si,string *m);int main() int N; cout輸入信源個數(shù)N; double SN; cout輸入信源概率endl; for(int i=0;iSi; for(int i=0;iN;i+) for
4、(int j=i;jN;j+) if(SiSj) double a; a=Si; Si=Sj; Sj=a; string MMN; dw(N,0,N-1,S,MM); cout輸出編碼endl; for(int i=0;iN;i+) coutMMi=1) for(int j=H;j=W;j+) sum+=*(si+j); double bn; for(int i=H;i=W;i+) sm+=*(si+i); bi=fabs(2*sm-sum)/sum; int ZH; double a=bH; for(int i=H;i=W;i+) if(bi=a) a=bi; ZH=i; for(int i
5、=H;i=W;i+) if(i=ZH) mi+=0; else mi+=1; int nn=n;double *ss;ss=si; string *mm;mm=m; if(ZH=H) dw(nn,ZH+1,W,ss,mm); else if(ZH=W-1) dw(nn,H,ZH,ss,mm); else dw(nn,H,ZH,ss,mm); dw(nn,ZH+1,W,ss,mm); 實驗三.霍夫曼 開始一、程序流程圖輸入lettersStrcmp(“%是”,是) 否 是計算字符個數(shù)與出現(xiàn)次數(shù)I+輸出letersIcnt? 是 否條用霍夫曼編碼結(jié)束二、 程序清單#include#includeu
6、sing namespace std; struct HNode double weight; int parent; int lchild; int rchild;void HuffmanTree(HNode *HuffNode,int n,double *si,string *m);int hc(string m);void nv(string *m,int n);int main() int N; cout輸入信源個數(shù)N; double *S=new doubleN; cout輸入信源概率endl; for(int i=0;iSi; string *MM=new stringN; for
7、(int i=0;iN;i+) for(int j=i;jN;j+) if(SiSj) double a; a=Si; Si=Sj; Sj=a; HNode *node=new HNode2*N-1; HuffmanTree(node,N,S,MM); nv(MM,N); cout輸出編碼endl; for(int i=0;iN;i+) coutMMiendl;void HuffmanTree(HNode *HuffNode,int n,double *si,string *m) int i,j,x1,x2,c,p; float m1,m2; for (i=0;i2*n-1;i+) HuffN
8、odei.weight=0; HuffNodei.parent=-1; HuffNodei.lchild=-1; HuffNodei.rchild=-1; for (i=0;in;i+) HuffNodei.weight=sii; for (i=0;in-1;i+) m1=m2=1; x1=x2=0; for (j=0;jn+i;j+) if (HuffNodej.parent=-1&HuffNodej.weightm1) m2=m1; x2=x1; m1=HuffNodej.weight; x1=j; else if (HuffNodej.parent=-1&HuffNodej.weight
9、m2) m2=HuffNodej.weight; x2=j; HuffNodex1.parent=n+i; HuffNodex2.parent=n+i; HuffNoden+i.weight=HuffNodex1.weight+HuffNodex2.weight; HuffNoden+i.lchild=x1; HuffNoden+i.rchild=x2; for(i=0;in;i+) c=i; p= HuffNodec.parent; while(p!=-1) if(HuffNodep.lchild =c) mi+=0; else mi+=1; c=p; p=HuffNodec.parent;
10、 int hc(string m) int a=0; for(int i=0;mi!=0;i+) a+; return a;void nv(string *m,int n)char mnn; int b; for(int i=0;in;i+) b=hc(mi); for(int j=0;jb;j+) mnj=mib-j-1; mi=mn; 實驗四.信道一、程序流程圖 開始均勻分布迭代計算器k=0C(K+1)輸出結(jié)果K=k+1結(jié)束否是三、 程序清單#include #include #include using namespace std;int main() int ni,no; int i,
11、j; cout輸入信源個數(shù)ni; cout輸出信源個數(shù)no; double *Si=new doubleni; double *So=new doubleno; cout輸入信源概率endl; for (i=0;iSii; coutendl; /再輸入信道轉(zhuǎn)移概率矩陣/注意進行判斷,某行如果總概率大于1,則出現(xiàn)錯誤應從新輸入 cout輸入轉(zhuǎn)移概率:endl; float *p; /轉(zhuǎn)移條件概率 p=new float *ni; for (i=0;ini;i+) pi=new floatno; for (i=0;ini;i+) for (j=0;jpij; for (i=0;ini;i+) fl
12、oat a=0; for (j=0;jno;j+) a+=pij; if (a!=1.0) cout輸入數(shù)據(jù)有誤,請檢查后再次輸入。endl; float *pp; /后驗概率 pp=new float *ni; for (i=0;ini;i+) ppi=new floatno; float C_Pre,C; /當前信道容量和前一次循環(huán)信道容量 C=10.0; double Pe=0.; /兩次信道容量相差的閾值 int r=0; /迭代次數(shù) float *p_up; /計算第r+1次循環(huán)輸入分布p_in分子 p_up=new floatni; float p_down; /計算第r+1次循環(huán)
13、輸入分布p_in分母 do r+;/求第r次循環(huán)反條件概率p_ij for (j=0;jno;j+) Soj=0.0; for (i=0;i0) for (i=0;ini;i+) ppij=Sii*pij/Soj; /p(xy)/w(y),p(xy)=p(y/x)*p(x) else for (i=0;ini;i+) ppij=0; /求第r+1次循環(huán)輸入分布p_in p_down=0.0; for (i=0;ini;i+) p_upi=0.0; for (j=0;j=0.) p_upi+=pij*log(ppij)/log(2.0); p_upi=pow(2.0,p_upi); p_down
14、+=p_upi; for (i=0;ini;i+) Sii=p_upi/p_down; /求C(r+1) C_Pre=C; C=log(p_down)/log(2.0); cout第r次的容量為:CPe); cout迭代的次數(shù)為:rendl;實驗五.循環(huán)碼一、程序流程圖退出輸入碼長nSwitch(n)生成多項式系數(shù)矩陣輸入校驗位輸入信源信息向量cUx(g,c,r,n)X=1?X(g,c,r,n)開始選擇編碼方式序號二、 程序清單#include#include using namespace std;int N;void UX(int *g,int *c,int r,int n);void X
15、(int *g,int *c,int r,int n);int main() N=10; int i,n,m,t,r; int gN,cN; cout*循環(huán)碼編碼方法(碼長n=10)*nendl; coutt輸入碼長n:m; n=m; switch(n)/求生成多項式 case 1 :cout輸入校驗位r=%d:,n-1r; switch(r) case 0:g0=1;break; break; case 2 :cout輸入校驗位r=%d:n-1r; switch(r) case 0:g0=1;break; case 1:g0=1;g1=1;break; break; case 3 :cout
16、輸入校驗位r=%d:n-1r; switch(r) case 0:g0=1;break; case 1:g0=1;g1=1;break; case 2:g0=1;g1=1;g2=1;break; break; case 4 :cout輸入校驗位r=%d:n-1r; switch(r) case 0:g0=1;break; case 1:g0=1;g1=1;break; case 2:g0=1;g1=0;g2=1;break; case 3:g0=1;g1=1;g2=1;g3=1;break; break; case 5 :cout輸入校驗位r=%d:n-1r; switch(r) case 0
17、:g0=1;break; case 1:g0=1;g1=1;break; case 4:g0=1;g1=1;g2=1;g3=1;g4=1;break; break; case 6 :cout輸入校驗位r=%d:n-1r; switch(r) case 0:g0=1;break; case 1:g0=1;g1=1;break; case 2:g0=1;g1=1;g2=1;break; case 3:g0=1;g1=0;g2=0;g3=1;break; case 4:g0=1;g1=0;g2=1;g3=0;g4=1;break; case 5:g0=1;g1=1;g2=1;g3=1;g4=1;g5
18、=1;break; break; case 7 :cout輸入校驗位r=%d:n-1r; switch(r) case 0 :g0=1;break; case 1 :g0=1;g1=1;break; case 3 :g0=1;g1=0;g2=1;g3=1;break; case 4 :g0=1;g1=1;g2=1;g3=0;g4=1;break; case 6 :g0=1;g1=1;g2=1;g3=1;g4=1;g5=1; g6=1;break; break; case 8 :cout輸入校驗位r=%d:n-1r; switch(r) case 0 :g0=1;break; case 1 :g
19、0=1;g1=1;break; case 2 :g0=1;g1=0;g2=1;break; case 3 :g0=1;g1=1;g2=1;g3=1;break; case 4 :g0=1;g1=0;g2=0;g3=0;g4=1;break; case 5 :g0=1;g1=1;g2=0;g3=0;g4=1;g5=1;break; case 6 :g0=1;g1=0;g2=1;g3=0;g4=1;g5=0; g6=1;break; case 7 :g0=1;g1=1;g2=1;g3=1;g4=1;g5=1;g6=1; g7=1;break; break; case 9 :cout輸入校驗位r=%
20、d:n-1r; switch(r) case 0 :g0=1;break; case 1 :g0=1;g1=1;break; case 2 :g0=1;g1=0;g2=1;break; case 3 :g0=1;g1=0;g2=0;g3=1;break; case 4 :g0=1;g1=0;g2=1;g3=0;g4=1;break; case 5 :g0=1;g1=1;g2=1;g3=1;g4=1;g5=1;break; case 6 :g0=1;g1=1;g2=0;g3=1;g4=0;g5=1; g6=1;break; case 7 :g0=1;g1=0;g2=1;g3=1;g4=1;g5=
21、1; g6=0;g7=1;break; case 8 :g0=1;g1=1;g2=1;g3=1;g4=1;g5=1;g6=1; g7=1;g8=1;break; break; case 10 :cout輸入校驗位r=%d:n-1r; switch(r) case 0 :g0=1;break; case 1 :g0=1;g1=1;break; case 2 :g0=1;g1=0;g2=1;break; / case 3 :g0=1;g1=0;g2=0;g3=1;break; case 4 :g0=1;g1=1;g2=1;g3=1;g4=1;break; case 5 :g0=1;g1=0;g2=
22、0;g3=0;g4=0;g5=1;break; case 6 :g0=1;g1=1;g2=0;g3=0;g4=0; g5=1;g6=1;break; case 8 :g0=1;g1=0;g2=1;g3=0;g4=1; g5=0;g6=1;g7=0;g8=1;break; case 9 :g0=1;g1=1;g2=1;g3=1;g4=1;g5=1; g6=1;g7=1;g8=1;g9=1;break; break; cout生成多項式系數(shù)矩陣為(冪次從低到高):nendl; for(i=0;i=n-1;i+) coutgi ;/生成多項式g(x) cout輸入信源信息向量c(%d位):nn-rendl; for(i=0;ici; coutt*選擇編碼方式及命令*nendl; coutt 1:系統(tǒng)編碼nendl; coutt 2:非系統(tǒng)編碼nendl; coutt 3:退出程序!nendl; coutt*nt; switch(t) case 1 :X(g,c,r,n);break; case 2 :UX(g,c,r,n);break; case 3 :cout退出程序;exit(0);break; void UX(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公家具訂購合同范本
- pc構(gòu)件模具合同范本
- 中學軍訓合同范本
- 共同抵押合同范本
- 中介和工廠合同范本
- 華泰期貨合同范本
- 公司簽訂賠償合同范例
- 修假山承攬合同范本
- 中國石化合同范本
- 亞馬遜產(chǎn)品合同范本
- 新教科版六年級下冊科學全冊教案
- 雞肉食品行業(yè)報告
- 華為十六字方針解析以崗定級-以級定薪-人崗匹配、易崗易薪
- 顆粒增強鋁基復合材料
- 火車站消防指導培訓課件
- 婦產(chǎn)科全套課件
- 穴位貼敷的運用課件
- 中心靜脈壓與有創(chuàng)動脈血壓監(jiān)測護理
- 【銅版畫“飛塵”技法實踐研究4900字(論文)】
- 人教版道德與法治五年級下冊全冊課件(完整版)
- 《GMP實務教程》 完整全套教學課件 項目1-14 GMP基礎(chǔ)知識-藥品生產(chǎn)行政檢查
評論
0/150
提交評論