信息论实验二报告(3)
发布时间:2021-06-09
发布时间:2021-06-09
for i=1:n-1
[p,num]=sort(p); % 对输入元素排序并纪录
mark(i,:)=[num(1:n-i+1),zeros(1,i-1)];
p=[p(1)+p(2),p(3:n),1];
end
% 2)生成一个n-1行、n1(n×n)列矩阵table,每行可看做n个段,
% 每段长为n,记录一个码字(每个码字的长度不会超过n)。
for i=1:n-1
table(i,:)=blanks(n*n);
end
% 3)计算各个元素码字,循环n 2次,决定矩阵table
% 从倒数第二行开始到第行的每段的码字值,到编码表格table
table(n-1,n)='l'; % 小值赋1
table(n-1,2*n)='0'; % 大值赋0
for i=2:n-1
table(n-i,1:n-1)=table(n-i+1,n*(find(mark(n-i+1,:)==1))-(n-2)...
:n*(find(mark(n-i+1,:)==1))); % 按mark的记录依次赋值
table(n-i,n)='1';
table(n-i,n+1:2*n-1)=table(n-i,1: n-1);
table(n-i,2*n)='0';
for j=1:i-1
table(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,...
n*(find(mark(n-i+1,:)==j+1)-1)+1:n*find(mark(n-i+1,:)==j+1)); % 按mark的记录依次赋值
end
end
% 4)得到编码后的码字
for i=1:n
W(i,1:n)=table(1,n*(find(mark(1,:)==i)-1)+1:n*find(mark(1,:)==i)); l(i)=length(find(abs(W(i,:))~=32));
end
L=sum(P.*l); % 计算平均码字长度
H=entropy(P,2); % 计算信源熵
V=sum(P.*((l-L).^2)); %计算码字的方差,以判断编码方法的优劣
q=H/L;% 计算编码效率
% 打印输出结果
for i=1:n
B{i}=i;
end
[m,n]=size(W);
TEMP=blanks(m);
W=[W,TEMP',TEMP',TEMP'];
[m,n]=size(W);
下一篇:论伽利略思想对近代物理的贡献