Matlab-算术编码
信息论的第三个作业……终于是完完全全自己写的代码了!留下了不学无术的泪水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-算术编码相关推荐
- (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)
1.代码功能 输入:一个字符串 输出: codeword(码值) codeword所占的位数 2.代码框图 3.代码超详解 统计字符串中的字符种类,调用函数,放入数组b中. b=unique(str1 ...
- (含Matlab源码)算术编码(arithmetic coding)的underflow问题
0.文章结构 文章的行文逻辑如下,看官可以根据需要跳读,节省时间. 1.介绍underflow和overflow. 2.underflow问题起源 3.underflow问起探索 4.underflo ...
- 算术编码、译码以及matlab实现
算术编码是一种采用的编码,我们用matlab语言来实现算术码的编码.译码过程. 首先,我们给定研究范围为 2元信号.用{0,1}符号来表示,然后我们假设发送方和接收方都知道符号0出现的概率p(0)和符 ...
- 基于MATLAB的算术编码
1.算术编码简介 算术编码是一种无损数据压缩方法,也是一种熵编码的方法.和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码.而算术编码是直接把整个输入 ...
- 算术编码 matlab程序,实验二算术编码及MATLAB实现.doc
实验二算术编码及MATLAB实现 武夷学院实验报告 课程名称: 多媒体通信技术 项目名称: 算术编码及MATLAB实现 姓名: _专业:__通信工程___ 班级: 学号:____同组成员_无_ 实验准 ...
- 信息论与编码实验报告——MATLAB实现算术编码
一.实验内容 试用MATLAB编制算术编码算法实现程序. 二.实验过程 2.1 算术编码实现原理 算术编码的算法思想如下: (1)对一组信源符号按照符号的概率从大到小排序,将[0,1)设为当前分析区间 ...
- 算术编码(matlab)上课实验
clear all format long symbol='abcd'; pr=[0.1 0.4 0.2 0.3]; seqin='aabccddcd'; codeword=arenc(symbol, ...
- 图像压缩编码码matlab实现——算术编码
clear all clc format long; symbol = ['abcd']; pr = [0.1 0.4 0.2 0.3]; seqin = ['cadacdb']; codeword ...
- 信息论中用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 ...
- 信息论与编码之算术编码
例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 ...
最新文章
- 认识微服务-服务架构演变
- 【theano-windows】学习笔记一——theano中的变量
- ASP.NET Core Web 项目文件介绍
- Linux安全 chage sudo授权 selinux安全上下文 gpg加密 aide入侵检测系统 audit 审计
- SpringBoot2.1.5(23)---SpringBoot 开发WEB应用
- Android MVP和Dagger2
- extjs中rowEditing动态编辑
- 与孩子一起学编程06章
- 深入理解JVM虚拟机读书笔记——运行时数据区
- svn和git有什么区别
- 室外宽温1口千兆光纤收发器工业导轨式发送机接收机单模单纤单电口
- HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象
- VPS上安装Zpanle面板
- 《这本书能让你睡得好》 阅读笔记与思考
- 杀毒辅助工具冰刃IceSword详细介绍
- qt 修改.exe文件图标_如何在没有错误的情况下更改压缩的.EXE文件上的图标
- 启明云端分享|IDO-SOM3568:可用于轻量级人工智能应用
- Spark 连接hive local
- 应用层协议 —— HTTP(二)
- world wind for web的hello world