香农编码的MATLAB实现.docVIP

  • 84
  • 0
  • 约小于1千字
  • 约 3页
  • 2019-07-01 发布于江西
  • 举报
香农编码的MATLAB实现 指导教师: 张 坤(讲师) 专业: 信息与计算科学(08级) 成员: 张深海(组长) 陈子姣 赵 静 范亚茹 实验目的: 用香农编码法编成二进制变长码,写出编码过程的Matlab程序。 实验内容: 香农编码方法: 将信源消息符号按其出现的概率大小依次排列为; 确定满足下列不等式的整数码长为; 为了编成唯一可译码,计算第个消息的累加概率; 将累加概率变换成二进制数; 取二进制数的小数点后位即为该消息符号的二进制码字。 实验步骤: 用p = fliplr(p)语句对p进行从大到小的排序; 用for循环计算第i个消息的累加概率; 调用c = cell(1,n) , 将码字存在元胞数组中; 二进制转换; 得到该消息符号的二进制码字。 实验结果: Matlab程序: function c = shannon(p) [p , index] = sort(p) ; p = fliplr(p) ;%从大到小 n = length(p) ; pa = 0 ;%累加概率 for i = 2:n pa(i) = pa(i - 1) + p(i - 1) ; end k = ceil(-log2(p)) ;%码字长度计算 c = cell(1,n) ;%生成元胞数组,存码字,是cell,跟上一行不一样 for i = 1:n

文档评论(0)

1亿VIP精品文档

相关文档