matlab香农编码,用MATLAB编程实现香农编码.doc

用MATLAB编程实现香农编码

实验四、用MATLAB编程实现香农编码

⒈实验目的和要求

(1)了解信源变长码的编码方法

(2)掌握香农编码方法

(3)掌握MATLAB的编程

⒉实验主要内容

使用MATLAB语言和excel对以下信源进行香农编码,并求出平均码长和编码效率。

3.实验原理

Ⅰ.香农编码方法

将信源发出的N个消息符号按其概率的递减次序排列

按下式计算第个消息的二进制代码组的码长,并取整

计算第个消息的累加概率(为小数)

将累加概率变换成二进制数

去掉小数点,并根据取小数点后的前几位为对应的代码组

Shannon编码的MATLAB程序:

clear;

N=input('N='); %输入信源符号的个数

s=0;

l=0;

H=0;

for i=1:N

p(i)=input('p=');

%输入信源符号概率分布矢量,p(i)<1

s=s+p(i)

H=H+(-p(i)*log2(p(i)));

%计算信源信息熵

end

if abs(s-1)>0,

error('不符合概率分布')

end

for i=1:N-1

for j=i+1:N

if p(i)

m=p(j);

p(j)=p(i);

p(i)=m;

end

end

end

%按概率分布大小对信源排序

for i=1:N

a=-log2(p(i));

if mod(a,1)==0

w=a;

else

w=fix(a+1);

end

%计算各信源符号的码长

l=l+p(i)*w; %计算平均码长

end

l=l;

n=H/l; %计算编码效率

P(1)=0

for i=2:N

P(i)=0;

for j=1:i-1

P(i)=P(i)+p(j);

end

end %计算累加概率

for i=1:N

for j=1:w

W(i,j)=fix(P(i)*2);

P(i)=P(i)*2-fix(P(i)*2);

end

end

%将累加概率转化为L(i)位二进制码字

disp(W) %显示码字

disp(l)% 显示平均码长

disp(n) %显示编码效率

Ⅱ. 平均码长的计算

Ⅲ. 编码效率的计算

()

4.主要仪器

(1)、计算机

(2) Windows 2000 或以上

(3)Microsoft Office 2000 或以上

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、问题背景: 1949年香农在《有噪声时的通信》一文中提出了信道容量的概念和信道编码定理,为信道编码奠定了理论基础。无噪信道编码定理(又称香农第一定理)指出,码字的平均长度只能大于或等于信源的熵。有噪信道编码定理(又称香农第二定理)则是编码存在定理。它指出只要信息传输速率小于信道容量,就存在一类编码,使信息传输的错误概率可以任意小。随着计算技术和数字通信的发展,纠错编码和密码学得到迅速的发展。 2、课题分析: 运用matlab编写程序求解任给信源符号概率香农编码。给定一组信源符号概率,通过所编写的程序信源符号概率编码,求出此信源符号概率对应的香农编码。 3、编程方法: 据课本上的介绍编码香农码的方法。 首先,给定信源符号概率,要先判断信源符号概率是否满足概率分布,即各概率之和是否为1,如果不为1就没有继续进行编码的必要,虽然任可以正常编码,但编码失去了意义。 其次,对信源符号概率进行从小到大的排序,以便进行下一步。从第一步就知道信源符号的个数n,于是构造一个nx4的零矩阵D,以便储存接下来运算的结果。把排好序的信源符号概率以列的形式赋给D的第一列。 再次,做编码的第二步,求信源符号概率的累加概率(方法见程序),用来编写码字。 接着求各信源符号概率对应的自信息量,用于求解码长k。 然后,我们对刚求的自信息量对无穷方向取最小正整数,得到的最小正整数就是该信源符号所对应编码的码长k,有了码长,接下来就可以求解码字。 最后,对所求到的累加概率求其二进制,取其小数点后的数,所取位数由该信源符号对应的码长决定,所用的步骤结束,依次得到各信源符号的香农编码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值