信息论的第三个作业……终于是完完全全自己写的代码了!留下了不学无术的泪水QAQ

%算术编码程序
%输入:信源u、信源分布p、需要进行编码的序列s
%输入备注:输入格式:a=[0 1]  p = [1/4 3/4] s = [1 0 1 1 1]
%输出:该序列的算术编码S
%输出备注:以序列所在区间的左端点值作为所求序列的码字%输入备注:如果信源符号是字符型,输入方式为:a = 'ab';  s = 'bbbababb';
%其实符号是数字可以写成数组也可以写成字符类型,matlab都支持运算,如:a = '01' s = '1101'
%序列比较长的时候写成字符类型比较方便function [S] = suanshu(a,p,s)
%设置初始值,序列为空,左端点为0,右端点为1,长度为1
Slow(1)=0;
Shigh(1)=1;
range=Shigh(1)-Slow(1);%计算信源符号的数目和所需要编码的序列长度
n = length(a);
m = length(s);%计算信源a中每个元素对应的左右端点low high
low(1) = 0;
for i = 1:nif i == 1high(i) = p(i);elselow(i) = p(i-1) + low(i-1);high(i) = low(i) + p(i);end
end
%开始遍历所要编码序列中的每个元素
for i = 1:m%寻找与当前元素相等的信源符号,把索引放入num中num = find(a==s(i));%开始计算添加新符号后的序列左右端点newSlow和newShighSlow(i+1) = Slow(i) + range*low(num);Shigh(i+1) = Slow(i) + range*high(num);range = Shigh(i+1) - Slow(i+1);
end
%最后以序列所在区间的左端点值作为所求序列的码字
%即输出最后计算得到的Slow(m+1)
S = Slow(m+1);

运行结果示例:

>> a = '01'a =01>> p = [1/8 7/8]p =0.1250    0.8750>> s = '11111110111110's =11111110111110>> suanshu(a,p,s)ans =0.6312

Matlab-算术编码相关推荐

  1. (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)

    1.代码功能 输入:一个字符串 输出: codeword(码值) codeword所占的位数 2.代码框图 3.代码超详解 统计字符串中的字符种类,调用函数,放入数组b中. b=unique(str1 ...

  2. (含Matlab源码)算术编码(arithmetic coding)的underflow问题

    0.文章结构 文章的行文逻辑如下,看官可以根据需要跳读,节省时间. 1.介绍underflow和overflow. 2.underflow问题起源 3.underflow问起探索 4.underflo ...

  3. 算术编码、译码以及matlab实现

    算术编码是一种采用的编码,我们用matlab语言来实现算术码的编码.译码过程. 首先,我们给定研究范围为 2元信号.用{0,1}符号来表示,然后我们假设发送方和接收方都知道符号0出现的概率p(0)和符 ...

  4. 基于MATLAB的算术编码

    1.算术编码简介 算术编码是一种无损数据压缩方法,也是一种熵编码的方法.和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码.而算术编码是直接把整个输入 ...

  5. 算术编码 matlab程序,实验二算术编码及MATLAB实现.doc

    实验二算术编码及MATLAB实现 武夷学院实验报告 课程名称: 多媒体通信技术 项目名称: 算术编码及MATLAB实现 姓名: _专业:__通信工程___ 班级: 学号:____同组成员_无_ 实验准 ...

  6. 信息论与编码实验报告——MATLAB实现算术编码

    一.实验内容 试用MATLAB编制算术编码算法实现程序. 二.实验过程 2.1 算术编码实现原理 算术编码的算法思想如下: (1)对一组信源符号按照符号的概率从大到小排序,将[0,1)设为当前分析区间 ...

  7. 算术编码(matlab)上课实验

    clear all format long symbol='abcd'; pr=[0.1 0.4 0.2 0.3]; seqin='aabccddcd'; codeword=arenc(symbol, ...

  8. 图像压缩编码码matlab实现——算术编码

    clear all clc format long; symbol = ['abcd']; pr = [0.1 0.4 0.2 0.3]; seqin = ['cadacdb']; codeword ...

  9. 信息论中用c语言进行算术编码,信息论与编码之算术编码

    例5-10 有4个符号a,b,c,d构成简单序列S=(a,b,d,a),各符号及其对应概率如下表5-9所列. 符号 符号概率pi 符号累积概率Pj a 0.100(1/2) 0.000 b 0.010 ...

  10. 信息论与编码之算术编码

    例5-10 有4个符号a,b,c,d构成简单序列S=(a,b,d,a),各符号及其对应概率如下表5-9所列. 符号 符号概率pi 符号累积概率Pj a 0.100(1/2) 0.000 b 0.010 ...

最新文章

  1. 认识微服务-服务架构演变
  2. 【theano-windows】学习笔记一——theano中的变量
  3. ASP.NET Core Web 项目文件介绍
  4. Linux安全 chage sudo授权 selinux安全上下文 gpg加密 aide入侵检测系统 audit 审计
  5. SpringBoot2.1.5(23)---SpringBoot 开发WEB应用
  6. Android MVP和Dagger2
  7. extjs中rowEditing动态编辑
  8. 与孩子一起学编程06章
  9. 深入理解JVM虚拟机读书笔记——运行时数据区
  10. svn和git有什么区别
  11. 室外宽温1口千兆光纤收发器工业导轨式发送机接收机单模单纤单电口
  12. HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象
  13. VPS上安装Zpanle面板
  14. 《这本书能让你睡得好》 阅读笔记与思考
  15. 杀毒辅助工具冰刃IceSword详细介绍
  16. qt 修改.exe文件图标_如何在没有错误的情况下更改压缩的.EXE文件上的图标
  17. 启明云端分享|IDO-SOM3568:可用于轻量级人工智能应用
  18. Spark 连接hive local
  19. 应用层协议 —— HTTP(二)
  20. world wind for web的hello world

热门文章

  1. Android简单实现比较两张涂鸦相似度
  2. 认识Java程序的框架
  3. 国科大图数据管理与分析课程项目gStore实验报告
  4. 微信二维码1-服务号推广(将网页存储为图片存储到服务器)
  5. linux加新的硬盘,linux添加新硬盘
  6. 使用vue ui创建vue项目(基于图形化界面的方式)
  7. 初学solidworks,这些基础知识你必须要掌握!
  8. js中怪异的this 指针
  9. Hystrix 使用
  10. 如何消除图片锯齿 html,Html5 canvas drawImage图片抗锯齿