100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 香农码字matlab 香农--费诺编码的matlab实现

香农码字matlab 香农--费诺编码的matlab实现

时间:2018-10-16 13:38:58

相关推荐

香农码字matlab 香农--费诺编码的matlab实现

香农--费诺编码的matlab实现

信息论与编码实验香农 --费诺编码的 matlab 实现学院:------班级:-----姓名:----学号:----摘要:用 预 先 规 定 的 方 法 将 文 字 、 数 字 或 其 他 对 象 编 成 数 码 , 或 将 信 息 、 数据 转 换 成 规 定 的 电 脉 冲 信 号 。 编 码 在 电 子 计 算 机 、 电 视 、 遥 控 和 通 讯 等 方 面广 泛 使 用 。 其 中 费 诺 编 码 有 广 泛 的 应 用 ,通 过 本 次 实 验 ,了 解 编 码 的 具 体 过程 ,通 过 编 程 实 现 编 码 ,利 用 matlab 实 现 费 诺 编 码 。关键字: 信 息 论 , 费 诺 编 码 , matlab正 文 :费诺编码也是一种常见的信源编码方法。信源符号以概率递减的次序排列进来, 将排列好的信源符号划分为两大组, 使第组的概率和近于相同,并各赋于一个二元码符号”0”和”1”.然后, 将每一大组的信源符号再分成两组,使同一组的两个小组的概率和近于相同,并又分别赋予一个二元码符号.依次下去,直至每一个小组只剩下一个信源符号为止. 这样, 信源符号所对应的码符号序列则为编得的码字.香农--费诺编码的 matlab 实现编码如下:clc;clear;A=[0.4,0.3,0.1,0.09,0.07,0.04];A=fliplr(sort(A));%降序排列[m,n]=size(A);for i=1:nB(i,1)=A(i);%生成 B 的第 1 列end%生成 B 第 2 列的元素a=sum(B(:,1))/2;for k=1:n-1if abs(sum(B(1:k,1))-a)=abs(sum(B(1:k+1,1))-a)break;endendfor i=1:n%生成 B 第 2 列的元素if i=kB(i,2)=0;elseB(i,2)=1;endend%生成第一次编码的结果END=B(:,2) ;END=sym(END);%生成第 3 列及以后几列的各元素j=3;while (j~=0)p=1;while(p=n)x=B(p,j-1);for q=p:nif x==-1break;elseif B(q,j-1)==xy=1;continue;elsey=0;break;endendendif y==1q=q+1;endif q==p|q-p==1B(p,j)=-1;elseif q-p==2B(p,j)=0;END(p)=[char(END(p)), 0 ];B(q-1,j)=1;END(q-1)=[char(END(q-1)), 1 ];elsea=sum(B(p:q-1,1))/2;for k=p:q-2if abs(sum(B(p:k,1))-a)=abs(sum(B(p:k+1,1))-a);break;endendfor i=p:q-1if i=kB(i,j)=0;END(i)=[char(END(i)), 0 ];elseB(i,j)=1;END(i)=[char(END(i)), 1 ];endendendendp=q;end C=B(:,j);D=find(C==-1);[e,f]=size(D);if e==nj=0;elsej=j+1;endendBAENDfor i=1:n[u,v]=size(char(END(i)));L(i)=v;endavlen=sum(L.*A)实验总结:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。