數(shù)據(jù)壓縮1大作業(yè)_第1頁
數(shù)據(jù)壓縮1大作業(yè)_第2頁
數(shù)據(jù)壓縮1大作業(yè)_第3頁
數(shù)據(jù)壓縮1大作業(yè)_第4頁
數(shù)據(jù)壓縮1大作業(yè)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

——算數(shù)編碼壓縮與解壓縮程序 2.1編碼器的實(shí)現(xiàn)試驗(yàn)背景及目的霍夫曼方法比香農(nóng)-費(fèi)諾方法更有效,但這兩種方法都很少能產(chǎn)生最佳變長的平均長度等于熵)。算數(shù)編碼克服了這個(gè)問題,它是把一個(gè)碼字(通常較長)試驗(yàn)內(nèi)容步驟m到2m個(gè)二進(jìn)制字的范圍。ii|(u-l+1)*CumCount(x-1)||(u-l+1)*CumCount(x)|.2.2解碼器的實(shí)現(xiàn)器實(shí)現(xiàn)就很好描述了。u|(u-l+1)*CumCount(x-1)||(u-l+1)*CumCount(x)|算法流程|(u-l+1)根Cum_Count(x)|{{}}{對l和u的(新)最高位求反}|(u-l+1)根Cum_Count(x)|{}{對l、u和t的(新)最高位求反}程序設(shè)計(jì)說明在程序壓縮包Arith中,算數(shù)編碼的實(shí)現(xiàn)程序文件為Arith.cpp,可在將data.txt文件中原來的數(shù)據(jù)覆蓋掉,再次運(yùn)行算數(shù)編碼的實(shí)現(xiàn)程序文件Arith.cpp即可得到測試結(jié)果,從而完成對程序壓縮性能的評價(jià)。價(jià)序壓縮性能評價(jià)做會(huì)顯得編碼結(jié)果比較亂),因此程序成功運(yùn)行后的編碼文件大小除綜上所述,本試驗(yàn)編寫的算數(shù)編碼壓縮與解壓縮程序不僅能完成各種符號(hào) 的壓縮比均大于1,因此本試驗(yàn)編寫的算數(shù)編碼壓縮與解壓縮程序具有較好的壓程序源代碼//定義相關(guān)變量并初始化//用來存儲(chǔ)從文件中讀入的字符串//文檔中字符的個(gè)數(shù)//字符總數(shù)intCKind=0;//文檔中字符的種類數(shù)intCount56]={0};//有效字符表中對應(yīng)字符出現(xiàn)次數(shù)intCumCount256]={0};//字符出現(xiàn)次數(shù)累加表intShowingTable};//有效字符表//主函數(shù){}//文件掃描函數(shù){FILE*fp1;{printf("數(shù)據(jù)加載失敗!\n");}for(i=0;i<FileLen;i++)//實(shí)現(xiàn)字符掃描{}//將有效字符移到新數(shù)組,同時(shí)編號(hào)forii<256;i++)//實(shí)現(xiàn)字符搬移{{}}{}{}//輸出統(tǒng)計(jì)結(jié)果printf("文件中共出現(xiàn)%d種字符,字符共計(jì)為%d個(gè)\n",CKind,TotalCount);//輸出字符統(tǒng)計(jì)表printf("字符該字符出現(xiàn)次數(shù)疊加次數(shù)\n");for(i=1;i<=CKind;i++)//實(shí)現(xiàn)字符搬移{printf("%d%d%d}for(i=0;i<FileLen;i++)//實(shí)現(xiàn)字符掃描{printf("%c",*(DataBuf+i));//輸出文件的各個(gè)字符}printf("\n");}intTurna[N]={0};//十進(jìn)制轉(zhuǎn)二進(jìn)制函數(shù){inta[N]={0};for(i=0;i<N;i++){}{}}//二進(jìn)制轉(zhuǎn)十進(jìn)制函數(shù){for(i=0;i<N;i++){}}intLowArray[N]={0};intHighArray[N]={0};//文件編碼函數(shù)//編碼輸出碼流{OldLow=0;//初始化下限stFILE*fp2;LL{printf("數(shù)據(jù)加載失敗!\n");}{ntjjCKindj{//按序?qū)⑤斎氲拿恳粋€(gè)字符與統(tǒng)計(jì)表中的字符進(jìn)行匹配{NewLow=OldLow+(OldHigh-OldLow+1)*CumCount[j-1]/{}得到新上限{}while(LowArray[0]==HighArray[0])//當(dāng)上下限最高位相同時(shí){{g}m{LowArray[m-1]=LowArray[m];}LowArray[N-1]=0;{hArraymHighArraym}}while(LowArray[0]==0&&LowArray[1]==1&&HighArray[0]==1&&HighArray[1]==0)//當(dāng)上下限的最高位和次高位分別為01和10時(shí),滿足{{LowArray[m-1]=LowArray[m];//下限數(shù)組低位補(bǔ)0HighArraymHighArraym1}LowArray[N-1]=0;LowArray[0]=(LowArray[0]+1)%2;//下限的最高位取反HighArrayHighArray0]+1)%2;//上限的最高位取反}}}}//將最終的下限編碼共12位添加到編碼碼流的最末位置{}for(i=0;i<N-1;i++){}}intIndex;//文件解碼函數(shù)//存儲(chǔ)從文件中讀入的壓縮碼//12位碼流元對應(yīng)的十進(jìn)制數(shù)//解碼判斷參量{FILE*fp3,*fpOut;FLAG{printf("數(shù)據(jù)加載失敗!\n");}foriiSubCodei化成程序中的二進(jìn)制碼流{}//寫出編碼得到的二進(jìn)制碼流printf("二進(jìn)制編碼結(jié)果為:\n");{}printf("\n");OldLow=0;//初始化下限for(i=0;i<N;i++){{}}printf("\n");printf("解碼結(jié)果為:\n");{for(i=0;i<N;i++){LowArray[i]=Turna[i];}1;//得到新上限for(i=0;i<N;i++){HighArray[i]=Turna[i];}while(LowArray[0]==HighArray[0])//當(dāng)上下限的最高位相同{{}for(i=0;i<N;i++){LowArray[i-1]=LowArray[i];}LowArray[N-1]=0;OldLow=NewLow;//更新上下限,進(jìn)行下一輪運(yùn)算}while(LowArray[0]==0&&LowArray[1]==1&&HighArray[0]==1&&{for(i=0;i<N;i++){LowArray[i-1]=LowArray[i];}LowArray[N-1]=0;LowArray[0]=(LowArray[0]+1)%2;//上下限及t的最高位取反OldLow=NewLow;//更新上下限,進(jìn)行下一輪運(yùn)算}ow{{}}FLAG++;}printf("\n");printf("\n");{printf("數(shù)據(jù)加載失敗!\n");}}測試數(shù)據(jù)文件本次試驗(yàn)共采用兩個(gè)文件完成對算數(shù)編碼程序的測試,一個(gè)為待壓縮文件data.txt,另一個(gè)為測試文件textdata.txt。兩個(gè)文件的具體內(nèi)容如下:Inaccordancewiththe“mainandcollateralchannels”theoryinTCM,theorgans.ItfeaturesintraditionalChinesemedicinethat“internaldiseasesaretobetreatedwithexternaltherapy”.Themaintherapyofacupunctureinvolvesusingstimulatethepatient’sacupointssoastostimulatethechannelsandrelievepain.Withmedicine,hasbeeninternationallyhailedasoneofthe“fournewnationaltreasures.”tatxte“artificialasitis,thegardenmustlookingeniousandnatural.”Whenyougoandriversfo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論