实 验 目 的: 通过该实验,掌握通过计算机实验可变长信源编码方法,进一步熟悉香农编码,费诺编码以及霍夫曼编码方法。
实 验 环 境: Matlab7.1
实 验 内 容 及 过 程:
1.对于给定的信源的概率分布,用MATLAB语言实现香农编码。
2. 对于给定的信源的概率分布,用MATLAB语言实现霍夫曼编码。
3. 对于给定的信源的概率分布,用MATLAB语言实现游程编码。
以下为M文件:
1.
function c = shannon(p)% p = [0.2 0.15 0.15 0.1 0.1 0.1 0.1 0.1]% shannon(p)[p , index] = sort(p) ;p = fliplr(p) ; n = length(p) ;pa = 0 ; for i = 2:n??? pa(i) = pa(i - 1) + p(i - 1) ;?? endk = ceil(-log2(p)) ; c = cell(1,n) ; for i = 1:n??? c{i} = '' ;??? tmp = pa(i) ;??? for j = 1:k(i)??????? tmp = tmp * 2 ;??????? if tmp >= 1 ??????????? tmp = tmp - 1 ;??????????? c{i}(j) = '1' ;??????? else??????????? c{i}(j) = '0' ;??????? end??? endendc = fliplr(c) ;c(index) = c ;
2.
function c = huffman(p)n = size(p ,