一、实验目的:

(1)了解信源变长码的编码方法;
(2)掌握香农编码方法;
(3)掌握MATLAB的编程。

                                                         

二、实验仪器:

Matlab2015a

三、实验原理:                                                           

1.将信源符号按概率从大到小顺序排列,

2.按下式计算第i个符号对应的码字的码长

3.计算第i个符号的累加概率

4.将累加概率Pi变换成二进制小数,取小数点后li位数作为第i个符号的码字。

四、实验步骤:                                                                                                               

1.先利用Matlab编写函数;

2.再根据函数将实验要求生成实验结果;

3.根据实验内容填写实验报告;                                                          

五、实验内容及数据整理:  

用Matlab软件编程实现Shannon编码

 六、实验结果及讨论                                                          

 clc;clear;close all

%% 数据输入

i = 1;

strTemp = ['请输入第',num2str(i),'个概率(0退出):'];

p = [];

p(i)  = input(strTemp);

while(p(end))

i = i+1;

strTemp = ['请输入第',num2str(i),'个概率(0退出):'];

temp = input(strTemp);

p = [p temp];

end

eps = 1e-5;

if(sum(p)>1.0+eps || sum(p)<1.0-eps)

error('概率和不等于1');

end

%% 初始化

n = length(p)-1; %由于最后一个数字为0

F = zeros(1,n);

logp = zeros(1,n);

L = zeros(1,n);

for i = 2:n

F(i) = F(i-1)+p(i-1);

logp(i-1) = -log2(p(i-1));

L(i-1) = ceil(logp(i-1));

end

logp(n) = -log2(p(n));

L(n) = ceil(logp(n));

%% 编码过程

for i = 1:n

temp1 = L(i);

temp2 = [];

temp3 = F(i);

while(temp1)

temp4 = fix(2*temp3);

temp3 = 2*temp3 - temp4;

temp2 = [temp2  num2str(temp4)];

temp1 = temp1 - 1;

end

fprintf('第%d个的香农编码为:%s\n',i,temp2);

end

 第二种方法:

clc;clear;close all
m=input('Enter the no.of message ensembles:'); %输入概率
z=[];
h=0;
l=0;
display('Enter the probabilities in descending order:') %按降序输入概率
for i=1:mfprintf('Ensemble%d\n',i); %总体均值p(i)=input('');
end%Finding each alpha values   找到每个值
a(1)=0;
for j=2:m;a(j)=a(j-1)+p(j-1);
end
fprintf('\n Alpha Matrix');
display(a);%Finding each code length
for i=1:mn(i)=ceil(-1*(log2(p(i))));
end
fprintf('\n Code length matrix');
display(n);%Computing each code
for i=1:mint=a(i);for j=1:n(i)frac=int*2c=floor(frac);frac=frac-c;z=[z c];int=frac;endfprintf('Codeword %d',i);display(z);z=[];
end%Computing Avg.Code Length & Entropy
fprintf('Avg.Code Length');
for i=1:mx=p(i)*n(i);l=l+x;x=p(i)*log2(1/p(i));h=h+x;
end
display(l);
fprintf('Entropy');
display(h);%Computing Efficiency
fprintf('Efficiency');
display(100*h/l);
fprintf('Redundancy');
display(100-(100*h/l));

Matlab Shannon编码实验相关推荐

  1. Matlab Shannon编码

    简述: 香农编码是是采用信源符号的累计概率分布函数来分配字码的.香农编码是根据香农第一定理直接得出的,指出了平均码长与信息之间的关系,同时也指出了可以通过编码使平均码长达到极限值.香农第一定理是将原始 ...

  2. 信息论 | Shannon编码MATLAB实现

    <信息论基础> 实验报告 姓名 班级 20电信X班 学号 20208327 实验项目 Shannon编码 日期 2022.11.1 实验环境 联想电脑 MATLAB R2018a版 实验内 ...

  3. 香农编码二叉树c语言,shannon码的编码实验总结.docx

    shannon码的编码实验总结 本科生实验报告 实验课程信息理论与编码 学院名称信息科学与技术学院 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年九月----二〇一六年十一月 ...

  4. Huffman编码、Shannon编码、Fano编码——《小王子》文本压缩与解压

    一.实验要求: 1 采用熵编码对<小王子>文本进行压缩,生成压缩文件: 2 将压缩文件解压,并与源文件比较: 3 从香农编码.Huffman编码.Fano编码中选择一种: 4 计算编码效率 ...

  5. MATLAB语言算法实验报告,机械工程实验——matlab实验报告.doc

    机械工程实验教学中心 - PAGE 20 - 机械工程实验教学中心 实验指导书 实验名称 基于Matlab的信号处理实验 课程名称 自选综合实验 一.实验目的及要求 实验目的 通过基于Matlab的信 ...

  6. 基于Matlab的循环码实验报告,基于matlab的循环码实验报告.doc

    基于matlab的循环码实验报告.doc 基于MATLAB循环码编码方法的应用叶俊(指导老师,刘丹平副教授)(重庆大学通信工程学院中国重庆400000)摘要任何两个相邻的循环码只有一位数字不同,因此循 ...

  7. labview 霍夫曼树_哈夫曼树编码实验报告_信息论与编码实验2 实验报告_信息论与编码报告...

    huffman编码C语言实验报告 今日推荐 180份文档 2014...4页 1下载券 安卓版100 doors 2攻略1... 3页 1下载券 <逃脱本色>doors....语文教育实习 ...

  8. matlab最小二乘法参数辨识,基于最小二乘法的MATLAB辨识仿真实验

    <工业控制计算机>2013 年第 26 卷第 7 期基于最小二乘法的 MATLAB 辨识仿真实验 崔秀美 刘文杰 陈 澄 (苏州大学机电工程学院,江苏 苏州 215021) Experim ...

  9. 实验6_MPEG音频编码实验

    MPEG音频编码实验 一.MP2简介 1.什么是MP2 2.MP2优缺点 1)优点 2)缺点 3.与MP3对比 二.MPEG简介 1.什么是MPEG-1 2.音频分层 三.音频编码--人类听觉系统的感 ...

最新文章

  1. 一不小心又把应用发挂了,复盘一下这十几分钟的黑暗时刻
  2. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
  3. 解决IE8下父容器背景图片不显示的问题
  4. mysql bin的过期时间_Mysql设置binlog过期时间并自动删除
  5. html在线音频播放器实训总结,HTML5音乐列表播放器SMusic开发总结
  6. win10电脑桌面透明便签_在win10电脑桌面上使用工作跟进提醒办公软件可用哪个便签软件?...
  7. 题外:分类篇(音乐风格分类)基于BP神经网络
  8. Java成神之路——String长度限制
  9. 高效 保活长连接:手把手教你实现 自适应的心跳保活机制
  10. 38个MySQL数据库的小技巧
  11. 大牛精心挑选的25个Visual Basic学习资料汇总
  12. Aliyun上Linux服务器挂载数据盘及速度测试
  13. PC傻瓜式安装黑苹果并打造成全能逆向工作站--更新至2021.12.20
  14. 三分钟解决Matlab中文乱码问题
  15. 看看雅虎助手是如何“兔子”和“360安全卫士”的
  16. 企业私有云建设需求分析
  17. tda4vm如何SPL方式加载MCU域的核?
  18. 睡眠排序算法c语言实现,Linux 进程必知必会
  19. 免费电子书 工具 开发工具包 各类资源 下载 .
  20. vue拖拽盒子;vue移动

热门文章

  1. Python单词反写、单词倒排
  2. 用Eclipse搭建VLC SDK开发环境
  3. 雨听 | 网页数据修改
  4. 【ElasticSearch】ELK statck
  5. Ionic 学习笔记之-痛彻心扉的环境搭建
  6. 英语爱阅读--I hope you live a life you're proud of
  7. Markdown Flow 画流程图详解
  8. linux awk统计文本单词,shell统计文本中单词的出现次数
  9. matlab win32错误,尝试运行Matlab-Compiler-Runtime应用程序时Windows 7中出现SxS错误
  10. win cmd快速调取CTex集宏手册及一份不太简短的latex介绍