香农编码的MATLAB实现.ppt

香农编码的MATLAB实现.ppt

ID:52653597

大小:913.00 KB

页数:23页

时间:2020-04-12

香农编码的MATLAB实现.ppt_第1页
香农编码的MATLAB实现.ppt_第2页
香农编码的MATLAB实现.ppt_第3页
香农编码的MATLAB实现.ppt_第4页
香农编码的MATLAB实现.ppt_第5页
资源描述:

《香农编码的MATLAB实现.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、实验二香农编码的MATLAB实现一、实验目的熟悉MATLAB平台及工作环境熟练使用条件判断语句、循环语句掌握香农编码的步骤掌握利用MATLAB实现香农编码二、实验原理1.香农编码步骤(1)将信源符号按概率从大到小的顺序排序:(2)令p(a0)=0,用pa(aj)(j=i+1)表示第i个码字的累加概率,则:二、实验原理1.香农编码步骤(3)令ki为第i个码字的码长,按照下式计算出各概率对应的码字长度ki:(4)把各个累加概率pa(aj)由十进制小数转化为二进制小数,并取小数点后的前ki位作为对应信源符号ai的码字。二、实验原理【例3.3.1】设有一单符号离散无记忆信源:

2、对该信源编二进制香农码。2.以教材P39例题3.3.1信源为例二、实验原理iaip(ai)jpa(aj)ki码字a001a10.2510.000200(0.000)22a20.2520.250201(0.010)23a30.2030.5003100(0.1000)24a40.1540.7003101(0.1011)25a50.1050.85041101(0.11011)26a60.0560.950511110(0.111100)22.以教材P39例题3.3.1信源为例二、实验原理平均码长:信源熵:信息率:编码效率:2.以教材P39例题3.3.1信源为例三、实验内容1.

3、程序设计(1)代码初始化clc;%清除命令窗口的内容clearall;%清除工作空间的内容p=[0.250.250.200.150.100.05];%输入信源分布n=length(p);%计算信源符号的个数三、实验内容(2)判断信源是否合法,计算信源熵ifmin(p)<0

4、

5、max(p)>1%判断概率值是否介于0到1之间disp(['信源分布P(X)=[',num2str(p),']']);disp('概率值必须介于0到1之间,请重新输入信源分布');returnelseifsum(p)~=1%判断概率累加和是否等于1disp(['信源分布P(X)=[',num2st

6、r(p),']']);disp('概率累加和必须等于1,请重新输入信源分布');return三、实验内容(2)判断信源是否合法,计算信源熵elseH=0;%熵值初始化为0fori=1:nH=-p(i)*log2(p(i))+H;%累加各个符号的概率加权endend三、实验内容(3)按照概率大小排序,并计算累加概率p=sort(p,'descend');%降序排列pa=zeros(1,n);%对累加概率矩阵初始化forj=2:npa(j)=pa(j-1)+p(j-1);%计算累加概率end三、实验内容(4)计算每个码字的长度k=zeros(1,n);%对码长矩阵初始化f

7、ori=1:nk(i)=ceil(-log2(p(i)));%计算每个码字长度,向上取整end三、实验内容(5)十进制小数转换成二进制小数k_max=max(k);bin=zeros(n,k_max);%对二进制小数矩阵初始化fori=1:nforj=1:k_maxbin(i,j)=floor(pa(i)*2);%将累加概率转换成二进制pa(i)=pa(i)*2-floor(pa(i)*2);endend三、实验内容(6)取小数点后ki位作为码字codeword=zeros(n,k_max);%对码字矩阵初始化fori=1:nforj=1:k_maxifj>k(i)c

8、odeword(i,j)=blanks(1);%创建空白串elseifbin(i,j)==0codeword(i,j)='0';三、实验内容(6)取小数点后ki位作为码字elseifbin(i,j)==1codeword(i,j)='1';endendendendcodeword=char(codeword);%码字三、实验内容(7)计算平均码长、信息率和编码效率K=sum(p.*k);%平均码长R=K;%信息率eff=H/R;%编码效率三、实验内容(8)输出结果disp(['信源分布P(X)=[',num2str(p),']']);disp('编码结果:');for

9、i=1:ndisp([num2str(p(i)),'->',num2str(codeword(i,:))]);enddisp(['信源熵H(X)=',num2str(H),'(bit/sign)']);disp(['平均码长K=',num2str(K),'(bit/sign)']);disp(['信息率R=',num2str(R),'(bit/sign)']);disp(['编码效率η=',num2str(eff)]);三、实验内容2.实验结果p=[0.250.250.200.150.100.05]三、实验内容2.实验结果p=[0.20.190.18

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

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

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