clear all
clc
format long;
symbol = ['abcd'];
pr = [0.1 0.4 0.2 0.3];
seqin = ['cadacdb'];
codeword = arencode(symbol, pr, seqin)
seqout = ardecode(symbol, pr, codeword, 7)

function symseq = ardecode(symbol, pr, codeword, symlen)
%给定字符概率的算术编码
%输出:symse:字符串
%输入:symbol:由字符组成的行向量
%      pr:字符出现的概率
%      codeword:码字
%      symlen:待解码字符串长度
format long
high_range = [];
for k = 1 : length(pr),
    high_range = [high_range sum(pr(1 : k))];
end
low_range = [0 high_range(1 : length(pr) - 1)];
prmin = min(pr);
symseq = [];
symseq = [];
for i = 1 : symlen,
    index = max(find(low_range <= codeword));
    codeword = codeword - low_range(index);
    
    %duo to numerical error, sometimes the encoded number
    %will be slightly smaller than the current lower bound.
    %If this happens, a correction is required.
    if abs(codeword - pr(index)) < 0.01 * prmin,
        index = index + 1;
        codeword = 0;
    end
    symseq = [symseq symbol(index)];
    codeword = codeword/pr(index);
    if abs(codeword) < 0.01 * prmin,
        i = symlen + 1;        %break the for loop immediately
    end
end

function arcode = arencode(symbol, pr, seqin)
%算术编码
%输出:码串
%输入:symbol:字符行向量
%      pr:字符出现概率
%      seqin:待编码字符串

high_range = [];
for k = 1: length(pr),
    high_range = [high_range sum(pr(1: k))];
end

low_range = [0 high_range(1: length(pr) - 1)];
sbidx = zeros(size(seqin));
for i = 1: length(seqin),
    sbidx(i) = find(symbol == seqin(i));
end

low = 0; high = 1;
for i = 1: length(seqin),
    range = high - low;
    high = low + range * high_range(sbidx(i));
    low = low + range * low_range(sbidx(i));
end
arcode = low;

图像压缩编码码matlab实现——算术编码相关推荐

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

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

  2. 图像压缩编码码matlab实现——JSjpeg

    function y = jpegencode(x, quality) %jpegencode函数用来压缩图像,x为输入图像 %quality决定了截去的系数和压缩比 error(nargchk(1, ...

  3. 图像压缩编码码matlab实现——一维无损预测编码压缩图像

    function y = LPCencode(x, f) %LPCencode函数用一维无损预测编码压缩图像x,f为预测系数,如果f默认,则f=1, %就是前值预测. error(nargchk(1, ...

  4. DCT变换编码matlab,基于DCT变换的图像压缩编码的MATLAB实现

    基于DCT变换的图像压缩编码的MATLAB实现 今天是一个信息化.网络化的时代,通过Internet可以获取全面的文字.图像.声音等信息,但是,图像信息需要占据大量的存储空间,给原始数 (本文共4页) ...

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

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

  6. 怎么把matlab仿真数据压缩,JPEG图像压缩编码及其MATLAB仿真实现(1)

    信息技术! ! 电! 子! 测! 量! 技! 术 ! ! "#"$%&'()$ *"+,-&"*"(% %"$.('#'/0 ...

  7. 基于MATLAB的算术编码

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

  8. 8b10b编码源码 matlab,8b/10b编码技术系列(一):Serdes、CDR、K码

    和大家分享一下关于8b/10b编码的知识点,如有什么错误之处或大家有什么额外的见解欢迎大家公众号后台留言! 一.Serdes高速收发器 在传统的源同步传输中,数据和时钟分离,在速率较低(<100 ...

  9. MATLAB实现算术编码

    str1 = ['d', 'a', 'c', 'a', 'b']; %统计字符串中的字符种类,调用函数,放入数组b中 b = unique(str1); %统计每种字符的个数,放入数组a中 for i ...

最新文章

  1. 宋祖儿面对粉丝不停撩头发,手上的书本亮了,是要转行当程序员?
  2. django-pagination---七步教你实现Django网站列表自动分页
  3. Query 创建方法
  4. java Map及Map.Entry详解
  5. [mybatis]log4j
  6. 中国剧本推理市场洞察2021
  7. php把二维数组变为一维,如何将PHP二维数组转换为一维数组
  8. 扩展欧几里得原理与模板
  9. 裴(pei)蜀定理 知识点
  10. 网络营销数据解读(九)——客户族群细分(Segmentation)2-2
  11. java水果仓库管理系统_java水果商城管理系统(界面框架代码)
  12. python如何截长图_python 截长图、H5页面截长图
  13. Java HTTP 代理服务器
  14. AUTOCAD——表格样式
  15. 工程建设项目管理信息系统
  16. Textual Entailment(自然语言推理-文本蕴含) - AllenNLP
  17. 【HTML502】HTML基础02_标题_段落_文本格式化_链接
  18. mysql组合索引没效果的原因
  19. 组合模式(Bridge Pattern) – 设计模式之结构型模式
  20. 点云数据在Matlab生成格网数据-2021-10-18

热门文章

  1. 星际家园最新服务器,《星际家园》内测服务器推出新武器
  2. HiveServer2配置HA
  3. 杀掉叽哩瓜叽(jlguaji.exe)的两种方法
  4. C#开发工具VisualStudio安装
  5. 【SQL查询】正则表达式匹配字符串
  6. 命令行如何进入项目文件夹
  7. html页面字迹模糊,css3字体可以模糊吗?
  8. MapReduce序列化之统计各部门员工薪资总和
  9. easyexcel导出excel 到浏览器,并设置第一行大标题
  10. android精品开源项目整理