香农编码的matlab实现总结_matlab简单代码实例

香农编码的matlab实现总结_matlab简单代码实例用MATLAB编程实现香农编码实验四、用MATLAB编程实现香农编码⒈实验目的和要求(1)了解信源变长码的编码方法(2)掌握香农编码方法(3)掌握MATLAB的编程⒉实验主要内容使用MATLAB语言和excel对以下信源进行香农编码,并求出平均码长和编码效率。3.实验原理Ⅰ.香农编码方法将信源发出的N个消息符号按其概率的递减次序排列按下式计算第个消息的二进制代码组的码长,并取整计算第个消息的累加概…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

用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 或以上

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195244.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 经典递归解决汉诺塔_c语言汉诺塔递归算法

    经典递归解决汉诺塔_c语言汉诺塔递归算法算法:当只有一个盘子的时候,只需要从将A塔上的一个盘子移到C塔上。当A塔上有两个盘子是,先将A塔上的1号盘子(编号从上到下)移动到B塔上,再将A塔上的2号盘子移动的C塔上,最后将B塔上的小盘子移动到C塔上。当A塔上有3个盘子时,先将A塔上编号1至2的盘子(共2个)移动到B塔上(需借助C塔),然后将A塔上的3号最大的盘子移动到C塔,最后将B塔上

    2022年10月12日
  • ip addr命令作用_linux查不到ip地址

    ip addr命令作用_linux查不到ip地址1.添加ip:ipaddradd1.1.1.100/255.255.255.0deveth02.删除ip:ipaddrdel1.1.1.100/255.255.255.0deveth03.清空接口ip:ipaddrflushdeveth0转载于:https://www.cnblogs.com/wangjq19920210/p/99995…

    2022年7月27日
  • 让你轻松架设FTP服务器

    让你轻松架设FTP服务器你想架设你的FTP服务器吗?笔者将从IIS和第三方软件两个角度,教会你轻松架设FTP服务器的方法,让你玩转FTP服务器的架设。一、用IIS架设FTP服务器:1、设置FTP服务器:(1)设置“FTP站点”标签项:在“控制面板→管理工具→Internet服务管理器”窗口中,选中“默认FTP站点→右键→属性”,在图1的“默认FTP站点属性”框中,“IP地址”可以使用默认,端口号保持“2

    2022年7月21日
  • 微信小程序之事件(bindtap和catchtap)[通俗易懂]

    微信小程序之事件(bindtap和catchtap)[通俗易懂]微信小程序之事件(bindtap和catchtap)微信小程序的事件请参考:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html。在这里不必啰嗦。我们都知道bindtap和catchtap都是当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。但是bind事件绑定不会阻止冒泡事件

    2022年4月20日
  • Pytest(16)随机执行测试用例pytest-random-order「建议收藏」

    Pytest(16)随机执行测试用例pytest-random-order「建议收藏」前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月30日
  • pdf.js使用方法「建议收藏」

    pdf.js使用方法「建议收藏」项目中显示pdf的功能,浏览过不少的技术帖,都不太理想,花了点时间研究了下pdf.js正确使用方法,总结下:1.防止自己忘记2.工作留有痕迹3.供大家参考借鉴pdf.js:将PDF文件解析后生成一张.png图片,利用canvas元素显示在页面上,此方法不推荐使用,呈现在页面上的pdf会模糊,目前没有找到有效解决办法,给爱钻研的小伙伴提供个思路,在pdf.js官网上有…

    2022年7月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号