数据压缩 第四次作业

5.给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1的实值标签。

算术编码代码

clc,clear all;
symbol=[‘abc‘];          %输入一串序列
pr=[0.2 0.3 0.5];        %各字符出现的概率
temp=[0.0 0.2 0.5 1.0];  %各字符的累积概率
orignal=temp;
in=input(‘input a string of abc:‘);
n=length(in);
%编码
for i=1:n
    width=temp(4)-temp(1);
    w=temp(1);
    switch in(i)
        case ‘a‘
            m=1;
        case ‘b‘
            m=2;
        case ‘c‘
            m=3;
        otherwise
            error(‘do not input other character‘);
    end
    temp(1)=w+orignal(m)*width;
    temp(4)=w+orignal(m+1)*width;
    left=temp(1);
    right=temp(4);
    fprintf(‘left=%.6f‘,left);
    fprintf(‘    ‘);
    fprintf(‘right=%.6f\n‘,right);
end
encode=(temp(1)+temp(4))/2

结果:

input a string of abc:‘aacbca‘
left=0.000000    right=0.200000
left=0.000000    right=0.040000
left=0.020000    right=0.040000
left=0.024000    right=0.030000
left=0.027000    right=0.030000
left=0.027000    right=0.027600

encode =

    0.0273

结论:  a1a1a3a2a3a1的实值标签为 0.0273

6.对于表4-9给出的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。

算术解码代码:

encode=0.63215699;     %序列标签
n=10;    %序列长度
pr=[0.2 0.3 0.5];        %各字符出现的概率
temp=[0.0 0.2 0.5 1.0];  %各字符的累积概率
orignal=temp;
decode=[‘0‘];
for i=1:n
    fprintf(‘tmp=%.6f\n‘,encode);
    if(encode>=orignal(1)& encode<orignal(2))
        decode(i)=‘a‘;
        t=1;
    elseif(encode>=orignal(2)& encode<orignal(3))
        decode(i)=‘b‘;
        t=2;
    else
        decode(i)=‘c‘;
        t=3;
    end
    encode=(encode-orignal(t));
    encode=encode/pr(t);
end
decode

结果:

tmp=0.632157
tmp=0.264314
tmp=0.214380
tmp=0.047933
tmp=0.239666
tmp=0.132219
tmp=0.661093
tmp=0.322185
tmp=0.407284
tmp=0.690947

decode =

cbbabacbbc

结论:  标签为0.63215699的长度为10的序列为  a3a2a2a1a2a1a3a2a2a3

时间: 2024-12-06 08:55:06

数据压缩 第四次作业的相关文章

04+罗潇潇+罗潇第四次作业

04+罗潇潇+罗潇第四次作业 1.项目整体管理的过程 (1)项目启动,制定章程 (2)制定初步的项目范围说明书. (3)制定项目管理计划 (4)指导和管理项目执行 (5)监督和控制项目 (6)整体变更 (7)项目收尾 2.项目启动就是以书面的.正式的形式肯定项目的成立与存在,同时以书面正式的形式为项目经理进行授权.项目章程应当由项目组织以外的项目发起人发布,若项目为本组织开发也可以由投资人发布. 3.项目章程包括: (1)基于项目干系人的需求和期望提出的要求. (2)项目必须满足的业务要求和产品

软件工程(第四次作业)

第四次作业 题目: 1. 敏捷开发是在什么样的背景下产生的?其主要特点有哪些?什么时候选择敏捷开发更恰当,为什么? 2. Code smell 是如何产生的?有哪些典型的 code smell?代码重构(Code refactoring)有哪些优点?有哪些代码重构的方法? 答:1(1)敏捷开发的背景: 所谓敏捷开发是以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言

软件工程第四次作业——团队作业

软件工程第四次作业--团队作业 本次作业采用团队作业的方式,我的队友是我的同班同学,他们分别为:(队长)亢健强,贾猛,黄明帅,黄珂锐.我们团队的总体任务是要做一个"乐谱识别与演奏"的软件,拍摄一张乐谱图片,它会使用光学识别转换成音乐. 此次团队作业中我得任务主要是做需求调研,为此我先总结了一下常用的需求调研方法的优缺点,然后结合我们团队的实际情况选出了一种最适合我们的调研方法. 调研方法 优 点 缺 点 实地观察法 调查者在实地通过观察获得直接的.真实可靠的第一手资料 有一定的偶然性,

&lt;第四次作业查阅&gt;hashmap由value找key的算法

问题:不同于第三次作业,第三次作业是按照key的值排序输出,第四次作业则是要求按照频率(hashmap的value值)排序,然后输出key的值,最开始的想法是还是沿用第三次作业的做法,想着查询一下怎么从value反得到key的值,最后发现这种做法不仅麻烦,而且效率特别低,也给了我启示,由于key-value对可能出现多对一的情况,所以由key的value比较容易高效,但是反之的效率就比较低,应该尽量能够避免试图通过value得key. Map中是一个key有且只有一个value. 但是一个val

结对作业(软件工程第四次作业)

软件工程第四次作业---代码审查 一.partner 结对伙伴:林路 代码链接:coding 二.代码审查表 功能模块名称 简单的语法分析程序 审查人 王灵杰 审查日期 2018.4.6 代码名称 简单的语法分析程序 代码作者 林路 文件结构 重要性 审查项 结论 头文件和定义文件的名称是否合理? 合理 头文件和定义文件的目录结构是否合理? 合理 版权和版本声明是否完整? 不完整 重要 头文件是否使用了 ifndef/define/endif 预处理块? 没有 头文件中是否只存放"声明"

第四次作业——04树

第四次作业--树 一.学习总结 树的思维结构图 2.对于树学习总结 ⑴.树结构认识:树是一种非线性结构,每个节点有0个或多个后继节点,有且仅有一个前驱节点(根节点除外).在树中,递归方法可以放在考虑的首要位置 ⑵.学习这个结构遇到的困难:递归调用不会很清晰,代码量大,较难记忆. ⑶.树结构可以解决的问题:并查集问题 哈夫曼编码的问题. 二.6-1 二叉树操作集 1.设计思路 void CreateBTree(BTree &BT,string str){ 创建一个树T 定义一个i来计数 创建一个队

数据压缩第二次作业(数据压缩第四版P301,2,3)

1.设X是一个随机变量,取值范围是一个包含M个字母的符号集.证明0≤H(X)≤log2M. 证明:当M=1时,即只有一个字符,其概率为1,则   H(X)=-∑(P(X1)*P(X1))=-1*(1/1)*log21=0当M>1时,取每个字母的概率为P(Xi),则H(X)=-∑p(Xi)*logP(Xi)=-M*(1/M)*log2M=log2M故0≤H(X)≤log2M 得证.  2,证明如果观察到一个序列的元素为idd分布,则该序列的熵等于一阶熵. 证明:因为熵H(X)=limn→∞1/n*

第四次作业总结与心得

一. 知识点总结:1.char 字符类型的定义 2.输入getchar,输出putchar 3.逻辑运算:逻辑与&&,逻辑或||,逻辑非| 4.两类分支结构:二分支结构,多分支结构 5.条件语句:if语句,switch语句 二.实验过程中遇到的问题及解决方法: 1.在使用switch语句时忘记使用break语句,应该在switch语句的每个语句段中都使用break语句 2.注意if与else的对应关系,else总是与它上面最近的if配对,若if与else的数目不一致,可以加{}来确定配对关

第四次作业——个人作业——软件案例分析

一.调研,评测 1.评测:对于这一部分我并没有发现什么bug,想来也是,毕竟该款软件已经发布了这么久,要是有bug早已被发现和修正了.就算现在有的话,以我目前的使用我是察觉不出来了,因为在此次作业之前用的也不是该款英语软件,我都是用“有道词典”. 而我测试该软件的平台是Windows7,软件版本:必应词典3.5.0,没有发现BUG. 2.调研:我所调查的用户对象都是在校的本科生,他们使用英语软件的目的有考四六级.看英语文章.检查代码运行报错原因等:他们本来也不知道“必应词典”该款软件,直到我要求