信源编码实验

信源编码实验

ID:27807562

大小:97.84 KB

页数:4页

时间:2018-12-06

信源编码实验_第1页
信源编码实验_第2页
信源编码实验_第3页
信源编码实验_第4页
资源描述:

《信源编码实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、UP(U)霍夫曼编码的matlab实现一、实验目的。利用哈夫曼编码进行通信可以人大提高信道的利用率,缩短信息传输的时间,降低传输成本。本实验用Matlab语言编程实现霍夫曼(Huffman)编码。二、实验原理。霍夫曼(Huffman)编码算法是满足前缀条件的平均二进制码长最短的编-源输出符号,而将较短的编码码字分配给较人概率的信源输岀。算法是:在信源符号集合中,首先将两个最小概率的信源输出合并为新的输出,其概率是两个相应输出符号概率Z和。这一过程重复下去,直到只剩下一个合并输岀为止,这个最后的合并输出符号的概率为1。这样就得到了一张树图,从树根

2、开始,将编码符号1和0分配在同一节点的任意两分支上,这一分配过程重复直到树叶。从树根到树叶途经支路上的编码最后就构成了一组异前置码,就是霍夫曼编码输出。离散无记忆信源:例如ulu2u3u4u50.40.20.20.10.1编码过程信符Si概率码字Wi第一次第二次WfOW2=10W3=lllW仟1101W5=110051525354550.40.20.20.10.10.40.20.20.40.41「0.2Q>2—弋第三次10^6-1A⑴►00.40通过上表的对信源缩减合并过程,从而完成了对信源的霍夫曼编码。三、实验步骤分为两步,首先是码树形成过程

3、:对信源概率进行合并形成编码码树。然后是码树冋溯过程:在码树上分配编码码字并最终得到霍夫曼编码。1、码树形成过程:将信源概率按照从小到大顺序排序并建立相应的位置索引。然后按上述规则进行信源合并,再对信源进行排序并建立新的位置索引,直到合并结束。在这一过程中每一次都把排序后的信源概率存入矩阵G中,位置索引存入矩阵Index屮。这样,由排序Z后的概率矩阵G以及索引矩阵Index就可以恢复原概率矩阵P了,从而保证了冋溯过程能够进行下去。2、码树冋溯过程:在码树上分配编码码字并最终得到Huffman编码。从索引短阵M的末行开始回溯。(1)在Index的

4、末行2元素位置填入0和1。(2)根据该行索引1位置指示,将索引1位置的编码(T')填入上一行的第一、笫二元素位置,并在它们之后分别添加'0'和'1'。(3)将索引不为'1'的位置的编码值(‘0’)填入上一行的相应位置(第3列)。(4)以Index的倒数第二行开始向上,重复步骤(1)〜(3),直到计算至Index的首行为止。四、程序代码:%取得信源概率矩阵,并进行合法性判断clear;P=input(,请输入信源概率向量P二');N=length(P);forcomponent=l:1:Nif(P(component)<0)error('信源概率

5、不能小于O');endendif((sum(P)-l)>0.0001)error信源概率之和必须为1');end%建立各概率符号的位置索引矩阵Index,利于编码后从树根进行回溯,从而得出对应的编码Q=PIndex二zeros(MT,N);%初始化Indexfori二1:NT[Q,L]=sort(Q);Index(i,:)=[L(l:N-i+l),zeros(1,i~l)];G(i,:)=Q;Q二[Q(1)+Q(2),Q(3:N),1];%将Q中概率最小的两个元素合并,元素不足的地方补1end%根据以上建立的Index矩阵,进行回溯,获取信源编

6、码fori=l:N~1Char(i,:)二blanks(N*N);%初始化一个由空格符组成的字符矩阵屮■用于存放编码end%从码树的树根向树叶冋溯,即从G矩阵的最后一行按与Index中的索引位置的对应关系向其第一行进行编码Char(N-l,N)=05;%G中的7-1行即最后一行第一个元索赋为0,存到Char中NT行的N列位置Char(N-l,2*N)=,T;%G屮的¥-1行即最后一行第二个元素赋为1,存到Char屮¥-1行的2*列位置%以下从G的倒数第二行开始向前编码fori二2:N-1Char(N-i,1:N-l)=Char(N~i+1,N

7、^(find(Index(N-i+l,:)==1))-(N-2):N*(find(Index(N-i+1,:)==1)));%将5血乂后一行中索引为1的编码码字填入到当前行的第一个编码位置Char(N-i,N)=0,;%然后在当前行的第一个编码位置末尾填入'0'Char(N-i,N+l:2*N-l)=Char(N-i,1:N-l);%将6后一行中索引为1的编码码字填入到当前行的第二个编码位置Char(N-i,2籾)二’1';%然后在当前行的第二个编码位置末尾填入’1'forj=l:i~l%内循环作用:将Index后一行屮索引不为1处的编码按照左

8、右顺序填入当前行的第3个位置开始的地方,最后计算到Index的首行为止Char(N-i,(j+1)*N+1:(j+2)*N)=Char(N-i+1,N

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。