香农编码的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vmware虚拟机安装linux系统_虚拟机的配置

    vmware虚拟机安装linux系统_虚拟机的配置VMware安装与配置Linux虚拟机

    2022年9月14日
    0
  • MySQL——MySQL 图形化管理工具的介绍

    MySQL——MySQL 图形化管理工具的介绍文章目录MySQL——MySQL图形化管理工具的介绍1、MySQLWorkbench2、Navicat3、SQLyog4、DBeaver5、DataGripMySQL——MySQL图形化管理工具的介绍MySQL图形化管理工具极大地方便了数据库的操作与管理,常用的图形化管理工具有:MysQLWorkbench、phpMyAdmin、NavicatPreminum、MySQLDumper、SQLyog、dbeaver、MysQLODBcConnector、DataGrip。1、MySQL

    2022年6月30日
    23
  • 数据库行存储及列存储详解

    数据库行存储及列存储详解本文参见:https://blog.csdn.net/Xingxinxinxin/article/details/80939277未完待修改…………………..一.数据处

    2022年7月1日
    21
  • C++函数指针详解

    C++函数指针详解1.定义每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针。2.语法指向函数的指针变量的一般定义形式为:数据类型(*指针变量名)(参数表);3.说明1)函数指针的定义形式中的数据类型是指函

    2022年6月22日
    24
  • Node.js excel转json

    Node.js excel转json这个是8月初做的,之前公司项目需要国际化,在项目本地会有两份json数据,一个中文的一个英文的,但是公司产品经理提供的数据是excel格式,需要我们自己转一次。最初几次数据量不大,一次50条左右,我都是手动的添加了几次,后来发现不行,每次这么搞容易出错且比较耗时,就写了这么一个工具,使用起来效率倍增,启动运行一下这个项目,然后粘贴复制即可。其实使用Node.js把excel转成json很简单…

    2022年6月7日
    96
  • linux centos端口查看,Centos查看端口占用情况和开启端口命令

    linux centos端口查看,Centos查看端口占用情况和开启端口命令Centos 查看端口占用情况命令 比如查看 80 端口占用情况使用如下命令 lsof itcp 80 列出所有端口 netstat ntlp1 开启端口 以 80 端口为例 方法一 sbin iptables IINPUT ptcp dport80 jACCEPT 写入修改 etc init d iptablessave 保存修改 serviceiptab 重启

    2025年6月16日
    0

发表回复

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

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