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

1、代码功能

  • 输入:一个字符串
  • 输出:
    •   codeword(码值)
    •  codeword所占的位数

2、代码框图

3、代码超详解

  •  统计字符串中的字符种类,调用函数,放入数组b中。
b=unique(str1);
  • 统计每种字符的个数,放入数组a中。
for i=1:length(b)a(i)=length(strfind(str1,b(i)));
end
  •  排序,形成对应关系的数组。排序后,若数组b中的第一个元素为字符‘a’, 则数组a中的第一个元素为字符‘a’,出现的次数
for i=1:length(a)-1for j=i+1:length(a)if(a(i)<a(j))t1=a(i);a(i)=a(j);a(j)=t1;t2=b(i);b(i)=b(j);b(j)=t2;endend
end
  • 统计每种字符出现的频率,放入数组frequency中。
for i=1:length(a)frequency(i) = a(i)/sum(a);
end

 根据频率分配概率范围,范围高值放入数组high中,范围低值放入数组low中。

low(1)=0;
for i = 1:length(frequency)if i==1high(i)=frequency(i);elselow(i)=frequency(i-1)+low(i-1);high(i)=low(i)+frequency(i);end
end

编码

%编码
low_value=0; %初始化
high_value=1; %初始化
range=high_value-low_value; %初始化
for i = 1:length(str1) %遍历字符串中的每一个元素,使用for循环语句。d=strfind(b,str1(i)); %找到字符串中的字符,在数组d中的角标%算术编码high_value = low_value+ range*high(d);low_value = low_value+range*low(d);range=high_value-low_value;%编码后数据处理if i==length(str1)ave=(high_value+low_value)/2;ave_str=num2str(ave,length(str1)); %把数字转成字符串low_value_str=num2str(low_value,length(str1)); %把数字转成字符串high_value_str=num2str(high_value,length(str1)); %把数字转成字符串%当ave_str与low_value_str对应位的元素不一样时%截去ave_str不一样元素后面的字符for ii= 3: length(low_value_str)if low_value_str(ii) ~= high_value_str(ii)ave_str((ii+1):end)=[];break;endii=ii+1;           endend
end%把ave_str值赋给codeword
codeword=ave_str
%计算codeword占用的位数
bits=-log2(range)

 

  • 整个代码地址

       Matlab实现算术编码

4、代码缺点

  • 这个代码可以实现短字符串的编码,对于长字符串的编码,会出现underflow。如何解决underflow, 这篇博客有专题研究

       算术编码(arithmetic coding)的underflow问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(含Python源码)Python实现K阶多项式的5种回归算法(regression)

0、文章结构 为了方便客官根据需要取阅&#xff0c;节约时间&#xff0c;文章目录结构如下&#xff1a; 问题描述理论部分&#xff1a;五种回归算法两种Python读取文件的方法Python实现五种回归算法使用的工具箱总结 1、问题描述 K阶多项式表达式 其中&#xff0c; 现有数据…

首张人类黑洞照片的背后

摘要&#xff1a;沈海军&#xff1a;今天&#xff08;2019年4月10日&#xff09;下午接受广东卫视采访&#xff0c;就晚上21:00即将发布的人类首张黑洞照片发表了评论。提笔撰稿时&#xff0c;尚未到照片官方的发布时间&#xff0c;故不能一睹黑洞照片的芳容&#xff0c;但鉴于…

一场“交通进化”将至: 5G带给车联网与自动驾驶哪些升级?

来源 &#xff1a;腾讯科技作者&#xff1a;李俨 美国高通公司技术标准高级总监5G时代已经来临&#xff0c;走向商用的步伐也在逐渐加快。腾讯科技联合优质科技CP以及行业专家推出“5G局中局”系列文章&#xff0c;为你解读5G在通讯、物联网、车联网、工业联网、边缘计算、云服…

特斯拉发布Q1无人驾驶安全报告:事故增多 但还是比人类少

来源&#xff1a;聚焦AI的近日&#xff0c;电动汽车制造商特斯拉发布了2019年第一季度自动驾驶仪&#xff08;Autopilot&#xff09;安全性报告&#xff0c;这是特斯拉发布的第三份类似报告&#xff0c;此前该公司认为媒体对特斯拉车辆事故的报道有失公允&#xff0c;因此他们开…

log4net 小记

突然想到想测试一下log4net&#xff0c;结果折腾了两天&#xff0c;才弄出来.....记录下来以备以后查看 背景&#xff1a;vs2013 mvc项目中想体验下log4net的功能&#xff08;主要是文件记录&#xff09; 翻看了log4net的相关资料&#xff0c;才发现其实它是有很多功能的&#…

关于找工作和选专业的思考

个人的成长离不开国家的发展&#xff0c;国家的发展离不开国际的大气候。 国家之间的竞争主要归于经济竞争&#xff0c;经济的核心在于产业&#xff0c;产业的核心则在于科学和技术。 无论是找工作还是选专业&#xff0c;赌的都是对未来趋势的预测&#xff0c;没有人会希望自己…

DARPA 2020财年研发预算 人工智能应用研究投资急剧增长

来源&#xff1a;美国国防部等摘要&#xff1a;2019年3月&#xff0c;特朗普政府公布2020财年预算申请。根据预算法案&#xff0c;2020财年美国国家安全预算总额增加340亿美元&#xff0c;达到7500亿美元&#xff0c;比上年增加5%。美国防部分得的经费为7180亿美元&#xff0c;…

使用Matlab(R2018b)画复杂函数的图形(网格图meshgrid)及等高线contour

1、函数 这里使用2D Michalewicz 函数&#xff0c;其表达式为&#xff1a; 2、画图 2.1 编写2D Michalewicz 函数 f(x,y)(-sin(x).*(sin(x.^2/3.1415926)).^(2*m)...-sin(y).*(sin(2*y.^2/3.1415926)).^(2*m)); 上述代码使用到了Anonymous Functions, 相关变量的数据类型为…

科创板:中国科技产业新引擎

来源&#xff1a;国信研究作者&#xff1a;杨均明&#xff0c;国信证券经济研究所所长万众期待的上海证券交易所科创板即将推出&#xff0c;科创板股票发行审核规则第三条要求&#xff0c;发行人申请股票首次发行上市&#xff0c;应当符合科创板定位&#xff0c;面向世界科技前…

粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现

这里以 2D Michalewicz function 为对象来演示粒子群算法。 1、Michalewicz function 2、代码详解 2.1 画Michalewicz函数的网格图形 f(x,y)(-sin(x).*(sin(x.^2/3.1415926)).^(2*m)...-sin(y).*(sin(2*y.^2/3.1415926)).^(2*m));range[0 4 0 4]; Ngrid100; dx(range(2)-ran…

中金人工智能报告:AI时代,10 年之后我们还能干什么?|71页完整报告

来源&#xff1a;黑科技智汇中金公司&#xff08;CICC&#xff09;发布了一份长达 71 页的人工智能的证券研究报告《人工智能时代&#xff0c;10 年之后我们还能干什么&#xff1f;》。对全球特别是中国企业当下的人工智能态势作了全面的介绍&#xff1a;包括 BAT、华为、科大讯…

UC伯克利新机器人成果:灵活自由地使用工具

来源&#xff1a;AI 科技评论摘要&#xff1a;前几天我们刚刚介绍了加州大学伯克利分校 Pieter Abbeel 教授领导伯克利机器人学习实验室&#xff08;UC Berkeleys Robot Learning Lab&#xff09;开发的会叠衣服的家务向机器人 BLUE&#xff0c;今天伯克利人工智能实验室&#…

bzoj 1934 最小割

收获&#xff1a; 1、流量为0的边可以不加入。 2、最小割方案要与决策方案对应。 1 #include <cstdio>2 #include <cmath>3 #include <cstring>4 #include <vector>5 #define min(a,b) ((a)<(b)?(a):(b))6 #define oo 0x3f3f3f3f7 #define N 6108 …

工业4.0:数字化供应链的三个方向

来源&#xff1a;资本实验室席卷全球的工业4.0革命几乎影响着每一个行业&#xff0c;包括各行业的供应链管理。在过去&#xff0c;供应链管理是令各行业都非常头疼的环节&#xff0c;因为传统供应链涉及大量模糊且无法访问的数据&#xff0c;就像”黑洞“一样吞噬着成本、时间与…

有效学习

怎样算有效学习&#xff1f; 记得有位大咖说过&#xff0c;‘当你把受过的教育都忘记了&#xff0c;剩下的就是教育’&#xff08;度娘说是爱因斯坦说的&#xff0c;此处未经考证&#xff09;。 学习可以看成是一个把知识放入潜意识的过程。所谓进入潜意识&#xff0c;是指当…

如果机器能帮我们学习,那么有多少东西能够被遗忘?

来源&#xff1a;原理在我还是个学生时的遥远年代&#xff0c;大多数计算机都还是体型巨大的机器。当时我有一个朋友&#xff0c;他的博士导师坚持让他对一个冗长又困难的原子理论进行手写计算。他用掉了一页又一页的草稿纸&#xff0c;上面充满了错误。于是最终他屈服于自己的…

如何通俗理解计算机视觉、计算机图形、图像处理之间的区别与联系

这三者之间联系和区别可以通过下图表示&#xff0c; 左边的图片表示实际景物&#xff0c;右边图片表示实际景物对应的图片。 1、计算机图形 计算机图形技术常用于计算机生成图形。该技术常用的领域有&#xff1a; a.动漫 b.游戏 c.计算机辅助设计&#xff08;CAD&#xff09;…

日本电信企业5G部署计划 限制了华为中兴设备的使用

来源&#xff1a;OFweek电子工程据外媒报道&#xff0c;日本监管机构日前正式向日本电信企业分配5G频谱&#xff0c;而这也正是日本在来年春季推出高速无线服务(5G)的一个重要里程碑。日本三大运营商NTT Docomo、KDDI和软银&#xff0c;以及新进入者Rakuten Inc&#xff0c;都获…

Python安装工具包踩过的坑

1、背景介绍 重装win10系统&#xff0c;重装Python。在坑出现之前&#xff0c;已经完成了Python的安装&#xff08;D盘&#xff09;&#xff0c;并且在系统中添加了环境变量。由于平时需要用到Python2.7和Python3.6&#xff0c;这里将对应的解释器分别改名为Python2和Python3。…

物联网面临的7大网络安全威胁

来源&#xff1a;51CTO译稿摘要&#xff1a;曾经在物联网世界&#xff0c;一切都变得更加庞大。不仅是设备本身——有些小到只容纳几个芯片&#xff0c;他们通常隐藏其中&#xff0c;眼不见心不烦。但物联网中庞大的数据和设备规模令任何网络安全专业人士都感到头疼。据广泛统计…