一 二
实验目的
1 通过本实验实现信源编码——Huffman编码 2 编写M文件实现,掌握Huffman编码方法 实验要求
1 了解matlab中M文件的编辑、调试过程 2 编写程序实现Huffman编码算法 三 实验步骤
1 输入Huffman编码程序
2 运行程序,按照提示输入相应信息,并记录输入信息,及运行结果。 注:观察结果方法:data(1).Code
显示a1的编码,同理显示data(2).Code,a2的编码结果。 3 思考:该程序编出的Huffman码是否是最小码方差的码?为什么? 四 报告要求
实验一:(题目) 一 实验目的要求 二 实验运行结果记录 三 写出给定程序的流程图,及每条语句的注释 四 自己编写的改进程序,及运行结果记录 五 实验小结
五 附Huffman编码程序
clear
N=input('请输入信源符号的个数:')
;
for i=1:N
%data(1).name=input('请输入各信源符号的名称:'); data(i).p=input('请输入各信源符号发生的概率:'); end
for i=1:N
pp(i)=data(i).p;
data(i).imap=i; %各符号在编码过程中的指针 data(i).Code=''; %各符号的编码结果 end
for j = 1:N % N——信源符号的个数
for i = 1:N - j if (pp(i) > pp(i + 1))
fT = pp(i); pp(i) = pp(i + 1); pp(i + 1) = fT; for k = 1:N if data(k).imap == i
data(k).imap = i + 1;
elseif data(k).imap == i + 1 data(k).imap = i; end end end end
end p=pp;
%%%%%%%%%%%%%%%%%%%%% %// 计算哈夫曼编码表 %// 开始编码 for i=1:N-1
for k = 1:N if data(k).imap== i
data(k).Code = strcat('1',data(k).Code); elseif (data(k).imap== i + 1) data(k).Code = strcat('0',data(k).Code); end end
p(i + 1) = p(i + 1)+p(i); for k = 1:N
if (data(k).imap == i) data(k).imap = i + 1; end end
for j = i + 1:N-1 if p(j) >p(j + 1)
fT =p(j);
p(j) = p(j + 1); p(j + 1) = fT;
for k = 1:N if (data(k).imap == j)
data(k).imap = j + 1;
elseif (data(k).imap == j + 1) data(k).imap = j; end end end end end
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务