Matlab Shannon编码实验
一、实验目的:
(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编码实验相关推荐
- Matlab Shannon编码
简述: 香农编码是是采用信源符号的累计概率分布函数来分配字码的.香农编码是根据香农第一定理直接得出的,指出了平均码长与信息之间的关系,同时也指出了可以通过编码使平均码长达到极限值.香农第一定理是将原始 ...
- 信息论 | Shannon编码MATLAB实现
<信息论基础> 实验报告 姓名 班级 20电信X班 学号 20208327 实验项目 Shannon编码 日期 2022.11.1 实验环境 联想电脑 MATLAB R2018a版 实验内 ...
- 香农编码二叉树c语言,shannon码的编码实验总结.docx
shannon码的编码实验总结 本科生实验报告 实验课程信息理论与编码 学院名称信息科学与技术学院 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年九月----二〇一六年十一月 ...
- Huffman编码、Shannon编码、Fano编码——《小王子》文本压缩与解压
一.实验要求: 1 采用熵编码对<小王子>文本进行压缩,生成压缩文件: 2 将压缩文件解压,并与源文件比较: 3 从香农编码.Huffman编码.Fano编码中选择一种: 4 计算编码效率 ...
- MATLAB语言算法实验报告,机械工程实验——matlab实验报告.doc
机械工程实验教学中心 - PAGE 20 - 机械工程实验教学中心 实验指导书 实验名称 基于Matlab的信号处理实验 课程名称 自选综合实验 一.实验目的及要求 实验目的 通过基于Matlab的信 ...
- 基于Matlab的循环码实验报告,基于matlab的循环码实验报告.doc
基于matlab的循环码实验报告.doc 基于MATLAB循环码编码方法的应用叶俊(指导老师,刘丹平副教授)(重庆大学通信工程学院中国重庆400000)摘要任何两个相邻的循环码只有一位数字不同,因此循 ...
- labview 霍夫曼树_哈夫曼树编码实验报告_信息论与编码实验2 实验报告_信息论与编码报告...
huffman编码C语言实验报告 今日推荐 180份文档 2014...4页 1下载券 安卓版100 doors 2攻略1... 3页 1下载券 <逃脱本色>doors....语文教育实习 ...
- matlab最小二乘法参数辨识,基于最小二乘法的MATLAB辨识仿真实验
<工业控制计算机>2013 年第 26 卷第 7 期基于最小二乘法的 MATLAB 辨识仿真实验 崔秀美 刘文杰 陈 澄 (苏州大学机电工程学院,江苏 苏州 215021) Experim ...
- 实验6_MPEG音频编码实验
MPEG音频编码实验 一.MP2简介 1.什么是MP2 2.MP2优缺点 1)优点 2)缺点 3.与MP3对比 二.MPEG简介 1.什么是MPEG-1 2.音频分层 三.音频编码--人类听觉系统的感 ...
最新文章
- 一不小心又把应用发挂了,复盘一下这十几分钟的黑暗时刻
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
- 解决IE8下父容器背景图片不显示的问题
- mysql bin的过期时间_Mysql设置binlog过期时间并自动删除
- html在线音频播放器实训总结,HTML5音乐列表播放器SMusic开发总结
- win10电脑桌面透明便签_在win10电脑桌面上使用工作跟进提醒办公软件可用哪个便签软件?...
- 题外:分类篇(音乐风格分类)基于BP神经网络
- Java成神之路——String长度限制
- 高效 保活长连接:手把手教你实现 自适应的心跳保活机制
- 38个MySQL数据库的小技巧
- 大牛精心挑选的25个Visual Basic学习资料汇总
- Aliyun上Linux服务器挂载数据盘及速度测试
- PC傻瓜式安装黑苹果并打造成全能逆向工作站--更新至2021.12.20
- 三分钟解决Matlab中文乱码问题
- 看看雅虎助手是如何“兔子”和“360安全卫士”的
- 企业私有云建设需求分析
- tda4vm如何SPL方式加载MCU域的核?
- 睡眠排序算法c语言实现,Linux 进程必知必会
- 免费电子书 工具 开发工具包 各类资源 下载 .
- vue拖拽盒子;vue移动
热门文章
- Python单词反写、单词倒排
- 用Eclipse搭建VLC SDK开发环境
- 雨听 | 网页数据修改
- 【ElasticSearch】ELK statck
- Ionic 学习笔记之-痛彻心扉的环境搭建
- 英语爱阅读--I hope you live a life you're proud of
- Markdown Flow 画流程图详解
- linux awk统计文本单词,shell统计文本中单词的出现次数
- matlab win32错误,尝试运行Matlab-Compiler-Runtime应用程序时Windows 7中出现SxS错误
- win cmd快速调取CTex集宏手册及一份不太简短的latex介绍