91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 20.14MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2023-08-02
  • 語言: Matlab
  • 標(biāo)簽: matlab??Huffman??

資源簡介

哈夫曼編碼(Huffman Coding),是一種熵編碼方式,哈夫曼編碼是可變字長編碼(VLC)的一種。Huffman于1952年提出一種編碼方法,該方法完全依據(jù)字符出現(xiàn)概率來構(gòu)造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做Huffman編碼(有時也稱為霍夫曼編碼)。 本實驗實現(xiàn)了如下功能: (1)產(chǎn)生[0 255]范圍內(nèi)均勻分布、正態(tài)分布、拉普拉斯分布的三組離散隨機整數(shù)。每組數(shù)據(jù)個數(shù)為 1920×1080,并對這三組數(shù)據(jù)分別進行哈夫曼編碼和解碼。計算熵和碼字的平均碼長。 (2)將彩色圖像的像素 R、G、B 值作為獨立符號,進行哈夫曼編碼和解碼,計算熵和碼字平均碼長。 (3)將彩色圖像的像素 R、G、B 值作為聯(lián)合符號,進行哈夫曼編碼和解碼,計算熵和碼字的平均碼長。

資源截圖

代碼片段和文件信息

function?[symbcodewordlengcodeent]?=?Huffman_code(I)
%%?-----------------------------------------------
%??EXPLAIN:?對圖像進行編碼的主要程序,編碼程序的子函數(shù)
%??
%??INPUT:?I為輸入圖像
%????????
%??OUTPUT:?symb為字符表,codeword為編碼表lengcode為碼字均長ent為熵值;
%
%??AUTHOR:Yang?Hao
%??DATE:?2019/5/2
%%?-----------------------------------------------

sta?=?tabulate(I(:))‘;%?統(tǒng)計概率
sta(:find(sta(2:)==0))=[];%刪除概率為0的列
symb?=?sta(1:);%?出現(xiàn)符號
freq?=?sta(3:)/100;%?統(tǒng)計得到的概率,統(tǒng)計值擴大了100倍,所以需要除100
[freqsortindex]?=?sort(freq);%將符號按照出現(xiàn)的概率從小到大排序,并位置索引
f?=?freq;%保存初始排序后的概率向量,方便后續(xù)統(tǒng)計計算
symb?=?symb(sortindex)‘;?%按概率排序的符號

L?=?length(freq);%字符的個數(shù)

%?創(chuàng)建一個元胞數(shù)組存放建立Huffman樹過程中的排序變化情況,其第i個元素值代表代表當(dāng)前排在第i位的所有字符的索引
ind_symb?=?num2cell(1:L);
codeword?=?cell(L1);%?創(chuàng)建一個L行1列的元胞型變量用于存放碼字

%?大于一個字符開始編碼
while?length(freq)?>?1?
????index0?=?ind_symb{1};
????index1?=?ind_symb{2};
????codeword?=?addcode(codewordindex0‘0‘);%ind_symb第一個元素代表的所有字符的編碼再左側(cè)添加碼字‘0’
????codeword?=?addcode(codewordindex1‘1‘);%ind_symb第二個元素代表的所有字符的編碼再左側(cè)添加碼字‘1’
????
????freq?=?[sum(freq(1:2))?freq(3:end)];%將前兩個概率相加得到新的概率向量
????ind_symb?=?{[ind_symb{1}ind_symb{2}]ind_symb{3:end}};%將前兩個索引合并新的索引
???
????[freqsortindex]?=?sort(freq);%將符號按照出現(xiàn)的概率從小到大排序,并記錄位置索引
????ind_symb?=?ind_symb(sortindex);?%按概率排序的符號索引
end

%?計算平均碼長和熵
lengcode?=?0;
ent?=?0;
for?i?=?1:length(codeword)
????lengcode?=?lengcode+length(codeword{i})*f(i);
????ent?=?ent-f(i)*log2(f(i));??
end

end


function?codeword?=?addcode(codewordindexitem)
%%?-----------------------------------------------
%??EXPLAIN:?添加碼字的函數(shù),Huffman_code的子函數(shù)
%??
%??INPUT:?codewoed為當(dāng)前編碼表,index為需要修改碼字的索引,item為需要增加的碼字
%????????
%??OUTPUT:?新的編碼表
%%?-----------------------------------------------

l=length(index);
for?i=1:l
????codeword{index(i)}=[itemcodeword{index(i)}];%在原碼字的左側(cè)添加碼字item
end
end

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-05-23?10:54??哈夫曼編碼算法的仿真和比較\
?????文件?????2074678??2019-05-04?19:59??哈夫曼編碼算法的仿真和比較\A_均勻分布.bmp
?????文件????????3536??2019-05-04?20:04??哈夫曼編碼算法的仿真和比較\A_均勻分布_哈夫曼編碼字典.txt
?????文件?????2073600??2019-05-04?20:06??哈夫曼編碼算法的仿真和比較\A_均勻分布_哈夫曼編碼文件.bin
?????文件?????2074678??2019-05-04?21:24??哈夫曼編碼算法的仿真和比較\A_均勻分布_哈夫曼編碼文件_解壓縮文件.bmp
?????文件?????6220856??2019-05-03?19:06??哈夫曼編碼算法的仿真和比較\Flower.bmp
?????文件????????2213??2019-05-05?20:02??哈夫曼編碼算法的仿真和比較\Huffman_code.m
?????文件????????2413??2019-05-23?09:46??哈夫曼編碼算法的仿真和比較\Huffman_code_main.m
?????文件????????2137??2019-05-23?09:47??哈夫曼編碼算法的仿真和比較\Huffman_decode.m
?????文件?????6220856??2019-05-03?18:44??哈夫曼編碼算法的仿真和比較\Lena.bmp
?????文件?????????529??2019-05-05?20:18??哈夫曼編碼算法的仿真和比較\random_data.m
?????文件?????6220856??2019-05-03?18:45??哈夫曼編碼算法的仿真和比較\Sky.bmp

評論

共有 條評論