break; end end
for i=1:n%生成B第2列的元素 if i<=k
encoding(i,2)=0; else
encoding(i,2)=1; end end
%生成第一次编码的结果 CODE=encoding(:,2)'; CODE=sym(CODE);
%生成第3列及以后几列的各元素 j=3;
while (j~=0) p=1;
while(p<=n)
x=encoding(p,j-1); for q=p:n if x==-1 break; else
if encoding(q,j-1)==x y=1; continue; else
y=0; break; end end end if y==1
q=q+1; end
if q==p|q-p==1
encoding(p,j)=-1; else
if q-p==2
encoding(p,j)=0;
CODE(p)=[char(CODE(p)),'0']; encoding(q-1,j)=1;
CODE(q-1)=[char(CODE(q-1)),'1']; else
a=sum(encoding(p:q-1,1))/2; for k=p:q-2
if abs(sum(encoding(p:k,1))-a)<=abs(sum(encoding(p:k+1,1))-a); break; end end
for i=p:q-1 if i<=k
encoding(i,j)=0;
CODE(i)=[char(CODE(i)),'0']; else
encoding(i,j)=1;
CODE(i)=[char(CODE(i)),'1']; end end end end p=q; end
C=encoding(:,j); D=find(C==-1); [e,f]=size(D); if e==n j=0; else
j=j+1; end end
encoding A CODE for i=1:n
[u,v]=size(char(CODE(i))); L(i)=v; end
avlen=sum(L.*A)
运行结果:
input the A:[0.3,0.1,0.2,0.3,0.1]
encoding =
0.3000 0 0 -1.0000 -1.0000
0.3000 0 1.0000 -1.0000 -1.0000 0.2000 1.0000 0 -1.0000 -1.0000 0.1000 1.0000 1.0000 0 -1.0000 0.1000 1.0000 1.0000 1.0000 -1.0000 A =
0.3000 0.3000 0.2000 0.1000 0.1000
CODE =
[ 00, 01, 10, 110, 111]
avlen =
2.2000
对于这次的大作业做的大体上没有什么差错,可是我感觉过于简洁。这次作业,使我对信息论2种编码有了更多的了解。同样,我感觉自己存在了太多的不足。对于课本知识,我未能够有全局的了解。对于接下来的考试,也未能有十足的把握。这使我更加的抓紧时间好好复习信息论的知识。感谢老师的平时的辛苦的教学,学生在此表示深深的感谢。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库信息论大作业(2)在线全文阅读。
相关推荐: