费诺编码的matlab实现.pdf

多媒体技术实验报告 学院:城南学院 姓名:学号: 指导老师:尹波 时间:2015 年 11 月 25 日 教师评语: 成绩 评阅教师 日期 实验一:费诺编码的 matlab 实现 1.实验目的 1) 掌握费诺编码的思想和具体方法。 2) 用 MATLAB 语言实现费诺编码。 2.实验原理及编码思想 : 费诺编码属于概率匹配编码,但不是最佳的编码方法。在编 N 进 制码时首先将信源消息符号按其出现的概率依次由大到小排列开来, 并将排列好的信源符号按概率值分N 大组,使N 组的概率之和近似相 同,并对各组赋予一个N 进制码元0、1……N-1。之后再针对每一大组 内的信源符号做如上的处理,即再分 概率和相同的 N 组,赋予 N 进 制码元。如此重复,直至每组只剩下一个信源符号 止。此时每个信 源符号所对应的码字即为费诺码。 具体过程如下: [1] 将 信 源 消 息 符 号 按 其 出 现 的 概 率 大 小 依 次 排 列 : P1=P2=…=Pn。 [2] 依次排列的信源符号按概率值分 两大组,使两个组的概率 之和近似相同,并对各组赋予一个二进制码元“0”和“1”。 [3] 使划分后的两个组的概率之和近似相同,并对各组赋予一个 二进制符号“0”和“1”。 [4] 如此重复,直至每个组只剩下一个信源符号 止。 [5] 信源符号所对应的码字即为费诺码。 例:有一幅 40 个像素组成的灰度图像,灰度共有 5 级,分别用符 号 A ,B ,C,D 和 E 表示。40 个像素中出现灰度 A 的像素数有 15 个, 出现灰度 B 的像素数有 7 个,出现灰度 C 的像素数有 7 个,其余情况 见表。 符号 A B C D E 出 现 15 7 7 6 5 的次数 编码 01 10 10 110 111 00 费诺编码方法属于概率匹配编码,具有如下特点: 1、概率大,则分解次数小;概率小则分解次数多。这符合最佳码 原则。 2、码字集合是唯一的。 3、分解完了,码字出来了,码长也有了,即先有码字后有码长。 因此,费诺编码方法又称 子集分解法。 3. 程序设计思路 4.程序代码 clc; clear; A=[0.19,0.18,0.17,0.16,0.13,0.10,0.06,0.01]; A=fliplr(sort(A));%降序排列 [m,n]=size(A); for i=1:n B(i,1)=A(i);%生成B的第1列 end %生成B第2列的元素 a=sum(B(:,1))/2; for k=1:n-1 if abs(sum(B(1:k,1))-a)=abs(sum(B(1:k+1,1))-a) break; end end for i=1:n%生成B第2列的元素 if i=k B(i,2)=0; else B(i,2)=1; end end %生成第一次编码的结果 END=B(:,2); END=sym(END); %生成第3列及以后几列的各元素 j=3; while (j~=0) p=1; while(p=n) x=B(p,j-1);

文档评论(0)

1亿VIP精品文档

相关文档