香农编码二叉树c语言,shannon码的编码实验总结.docx
shannon碼的編碼實(shí)驗(yàn)總結(jié)
本科生實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)課程信息理論與編碼 學(xué)院名稱信息科學(xué)與技術(shù)學(xué)院 專業(yè)名稱 學(xué)生姓名 學(xué)生學(xué)號(hào) 指導(dǎo)教師 實(shí)驗(yàn)地點(diǎn) 實(shí)驗(yàn)成績(jī) 二〇一六年九月----二〇一六年十一月 填寫說(shuō)明 1、適用于本科生所有的實(shí)驗(yàn)報(bào)告; 2、專業(yè)填寫為專業(yè)全稱,有專業(yè)方向的用小括號(hào)標(biāo)明; 3、格式要求: ①用A4紙雙面打印或在A4大小紙上用藍(lán)黑色水筆書寫。②打印排版:正文用宋體小四號(hào),倍行距,頁(yè)邊距采取默認(rèn)形式。字符間距為默認(rèn)值;頁(yè)碼用小五號(hào)字底端居中。 ③具體要求: 題目; 摘要; 關(guān)鍵詞 小四號(hào)黑體 參考文獻(xiàn),參考文獻(xiàn)用五號(hào)宋體,參照《參考文獻(xiàn)著錄規(guī)則》。 實(shí)驗(yàn)一:香農(nóng)編碼 一、實(shí)驗(yàn)?zāi)康摹 ≌莆胀ㄟ^(guò)計(jì)算機(jī)實(shí)現(xiàn)香農(nóng)編碼的方法。 二、實(shí)驗(yàn)要求 對(duì)于給定的信源的概率分布,按照香農(nóng)編碼的方法進(jìn)行計(jì)算機(jī)實(shí)現(xiàn)。 三、實(shí)驗(yàn)基本原理 給定某個(gè)信源符號(hào)的概率分布,通過(guò)以下的步驟進(jìn)行香農(nóng)編碼 1.將信源消息符號(hào)按其出現(xiàn)的概率大小排列 p(x1)?p(x2)???p(xn) 2.確定滿足下列不等式的整數(shù)碼長(zhǎng)Ki; ?log2p(xi)?Ki??log2p(xi)?1 3.為了編成唯一可譯碼,計(jì)算第i個(gè)消息的累加概率 pi??p(xk) k?1i?1 4.將累加概率Pi變換成二進(jìn)制數(shù)。 5.取Pi二進(jìn)制數(shù)的小數(shù)點(diǎn)后Ki位即為該消息符號(hào)的二進(jìn)制碼。 四、實(shí)驗(yàn)內(nèi)容 x2x3x4x5x6x7??X??x1?q(X)???????進(jìn)行二進(jìn)制香農(nóng)編碼。1.對(duì)給定信源? x2x3x4x5x6??X??x1??q(X)??????進(jìn)行二進(jìn)制香農(nóng)編碼。2.對(duì)給定信源? 3.自已選擇一個(gè)例子進(jìn)行香農(nóng)編碼。 五、實(shí)驗(yàn)設(shè)備 PC計(jì)算機(jī),C++ 六、實(shí)驗(yàn)報(bào)告要求 1、畫出程序設(shè)計(jì)的流程圖, 2、寫出程序代碼, 3、寫出在調(diào)試過(guò)程中出現(xiàn)的問題, 4、對(duì)實(shí)驗(yàn)的結(jié)果進(jìn)行分析。 七、流程圖 八、程序代碼 //:定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。 // #include"" #include #include usingnamespacestd; int_tmain(intargc,_TCHAR*argv[]) { inttest;intN; cout>N; cout>X[i]; } //由小到大排序 for(i=0;i=1)//累加概率乘2大于1,對(duì)應(yīng)碼字加1,累加概率自身取余 {pa[i]=pa[i]*2-1;code[i]+="1"; } else//累加概率乘2小于1時(shí),對(duì)應(yīng)碼字加0,累加概率自身取余 { code[i]+="0"; pa[i]*=2;}}{code[i]=code[i].substr(0,K[i]);}//求碼字for(i=0;idata() #include"vector" #include"algorithm" #include"" usingnamespacestd; structbitree {//定義結(jié)構(gòu)用于存儲(chǔ)編碼結(jié)果的二叉樹結(jié)構(gòu),在譯碼時(shí)用到 charch;//用于存儲(chǔ)碼符號(hào) charmz;//用于存儲(chǔ)碼字 bitree*lchild; bitree*rchild; }; structdata {//用于存儲(chǔ)相關(guān)的信源符號(hào)以及其概率 doublep; charch; vectorcode; intml; }; boolsortspecial(datadt1,datadt2) {//用于排序時(shí)用 return>; } voidprint2(vectorvd) {//用于打印譯碼結(jié)果 for(inti=0;i&vd) {//用于讀入相關(guān)的信源符號(hào)以及概率 intn; while(true) { cout>n; cout>; cin>>; =0; _back(dt); i++; } doublesum=0; vector::iteratorpit; /*for(pit=();pit!=();pit++) { sum+=pit->p; } if(sum!=1) { coutch=ch1; bit->mz=ch2; bit->lchild=NULL; bit->rchild=NULL; if(ch1=='0') bt->rchild=bit; elsebt->lchild=
總結(jié)
以上是生活随笔為你收集整理的香农编码二叉树c语言,shannon码的编码实验总结.docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西部牧业是上市公司吗
- 下一篇: 微服务应用容器化场景中常见问题总结