香农编码实验报告


    

    中南学


    信息编码实验报告



    题 目
    信源编码实验
    指导教师

    学 院

    专业班级

    姓名

    学号

    日期




















    目录
    香农编码………………………………………3
    实验目3
    实验求3
    编码算法3
    调试程3
    参考代码4
    调试验证7
    实验总结7
    二哈夫曼编码………………………………………8
    实验目8
    实验原理8
    数记录9
    实验心10







    香农编码
    1实验目
    (1)进步熟悉Shannon编码算法
    (2)掌握C语言程序设计调试程中数值进制转换数值字符串间转换等技术
    2实验求
    (1)输入:信源符号数q信源概率分布p
    (2)输出:信源符号应Shannon编码码字
    3Shannon编码算法

    1:procedure SHANNON(q{})
    2 降序排列{}
    3 for i1 q do
    4 F()
    5:
    6:累加概率F()(十进制数)变换成二进制数
    7:取数点二进制数字作第i消息码字
    8:end for

    9:end procedure

    4 调试程
    1fatal error C1083 Cannot open include file 'unistdh' No such file or directory
    fatal error C1083 Cannot open include file 'valuesh' No such file or directory
    原:unistdhvalueshUnix操作系统头文件
    纠错:删

    2error C2144 syntax error missing ')' before type 'int'
    error C2064 term does not evaluate to a function
    原:l_i(int *)calloc(nsizeof(int)) l_i缺少赋值符号通编译
    纠错:添加赋值符号

    3 error C2018 unknown character '0xa1'
    原:识符号
    纠错:错误处识符号改符合C语言规范符号

    4 error C2021 expected exponent value not ' '
    原:if(fabs(sum10)>DELTA) 行中DELTA宏定义正确
    纠错:# define DELTA 0000001

    5 error C2143 syntax error missing '' before '}'
    原:少写号
    纠错:应位置添加号

    5 参考代码
    # include
    # include
    # include
    # include
    # define DELTA 0000001*精度*
    void sort(float*int)*排序*
    int main(void)
    {
    register int ij
    int n *符号数*
    int temp*中间变量*
    float *p_i *符号概率*
    float *P_i *累加概率*
    int *l_i *码长*
    char * *C *码集合*
    *sum检验数p缓存中间数*
    float sump

    *输入符号数*
    fscanf(stdind&n)
    *分配存址 *
    p_i(float *)calloc(nsizeof(float))
    P_i(float *)calloc(nsizeof(float))
    l_i(int *)calloc(nsizeof(int))

    * 存储信道传输概率*
    for(i0i fscanf(stdinf&p_i[i])

    *确认输入数*
    sum00
    for(i0i sum+p_i[i]
    if(fabs(sum(10))>DELTA)
    fprintf(stderrInvalid input data \n)

    fprintf(stdoutStarting…\n\n)

    *降序排列概率*
    sort (p_in)

    *计算符号码长*
    for(i0i {
    p(float)((log(p_i[i])))log(20)
    l_i[i](int)ceil(p)
    }

    *码字分配存址*
    C(char **)calloc(nsizeof(char *))
    for(i0i {
    C[i](char *)calloc(l_i[i]+1sizeof(char))
    C[i][0]'\0'
    }

    *计算概率累加*
    P_i[0]00
    for(i1i P_i[i]P_i[i1]+p_i[i1]

    *概率转变二进制编码*
    for(i0i {
    for(j0j {
    *2整数部分位二进制码元*
    P_i[i]P_i[i]*2
    temp(int)(P_i[i])
    P_i[i]P_i[i]temp
    *整数部分01等00*
    if(temp0)
    C[i]strcat(C[i]0)
    else
    C[i]strcat(C[i]1)
    }
    }

    *显示编码结果*
    fprintf(stdoutThe output coding is \n)
    for(i0i fprintf(stdoutsC[i])
    fprintf(stdout\n\n)

    *释放存空间*
    for(in1i>0i)
    free(C[i])
    free(C)
    free(p_i)
    free(P_i)
    free(l_i)

    exit(0)
    }

    *泡排序法*
    void sort(float *kint m)
    {
    int i1*外层循环变量*
    int j1*层循环变量*
    int finish0*结束标志*
    float temp*中间变量*

    while(i {
    finish1
    for(j0j {
    *数移*
    if(k[j] {
    tempk[j]
    k[j]k[j+1]
    k[j+1]k[j]
    finish0
    }
    i++
    }
    }
    }


    6 调试验证:

    程序结果:


    7 实验总结
    1949年香农噪声时通信文中提出信道容量概念信道编码定理信道编码奠定理基础噪信道编码定理(称香农第定理)指出码字均长度等信源熵噪信道编码定理(称香农第二定理)编码存定理指出信息传输速率信道容量存类编码信息传输错误概率意着计算技术数字通信发展纠错编码密码学迅速发展香农编码定理然指出理想编码器存性没出实码结构构造方法编码理正解决问题发展起科学理编码目优化通信系统
    香农编码码符号概率短码表示概率长码表示程序中概率排序求码字次排序符号概率应







    二 哈夫曼编码
    1实验目务
    1 理解信源编码意义
    2 熟悉 MATLAB程序设计
    3 掌握哈夫曼编码方法计算机实现
    4 定信源进行香农编码计算编码效率
    2实验原理介绍
    1信源符号概率序排列 设法逆次序分配码字长度

    2分配码字长度时首先出现概率 两符号概率相加合成概率
    3合成概率成新组合符号概率重复述做法直剩两符号概率止
    4完成概率序排列反逐步前进行编码次二分支赋予二进制码概率赋零概率赋1
    5级开始前返回信源符号应码元序列相应码字

    3实验容步骤
    信源进行哈夫曼编码计算编码效率

    (1) 计算该信源信源熵信源概率进行排序
    (2) 首先出现概率两符号概率相加合成概率合成概率概率进行组合新概率组合重复述做法直剩两概率止反逐步前进行编码次两分支赋予二进制码概率赋1概率赋0
    (3)级开始前返回信源符号应码元序列相应码字
    (4)计算码字均码长出编码效率
    4实验数记录
    >> clear all
    >> p[020 018 015 017 019 010 001]
    l0
    H0
    Nlength(p)
    for i1N
    HH+(p(i)*log2(p(i)))
    end
    fprintf('信源信息熵:\n')
    disp(H)
    for i1N1
    for ji+1N
    if p(i) mp(j)
    p(j)p(i)
    p(i)m
    end
    end
    end
    for i1N1
    c(i)blanks(N*N)
    end
    c(N1N)'0'
    c(N12*N)'1'
    for i1N1 字符数组c码字赋值程记路径10
    c(Ni1N1)c(Ni+1N*(find(m(Ni+1)1))(N2)N*(find(m(Ni+1)1)))
    c(NiN)'0'
    c(NiN+12*N1)c(Ni1N1)
    c(Ni2*N)'1'
    for j1i1
    c(Ni(j+1)*N+1(j+2)*N)c(Ni+1N*(find(m(Ni+1)j+1)1)+1N*find(m(Ni+1)j+1))
    end
    end
    for i1N
    h(i1N)c(1N*(find(m(1)i)1)+1find(m(1)i)*N)码字赋值
    ll(i)length(find(abs(h(i))~32))码字码长
    end
    lsum(p*ll)计算均码长
    nHl计算编码效率
    fprintf('编码码字:\n')
    disp(h)输入序排列码字
    fprintf('均码长:\n')
    disp(l)输出均码长
    fprintf('编码效率:\n')
    disp(n)输出编码效率



    5 实验心
    知识浅薄验足阅历颇浅该程序设计方面足会学程中根学知识断修改完善争取慢慢趋完美
    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    信息论实验报告(实验四、哈夫曼编码)

    学生实验报告院别电子工程学院课程名称 信息论与编码班级实验名称实验四、哈夫曼编码姓名实验时间学号指导教师成绩报 告 内 容一、实验目的和任务1、 理解信源编码的意义;2、 熟悉 MATLA...

    1年前   
    249    0

    编码

    编码教学目标:(1)学生通过生活中的事例,初步体会数字编码思想在解决实际问题中的应用。(2)学生通过观察、比较、猜测来探索数字编码的简单方法,学会用数进行编码,初步培养抽象能力和概括能力。(3...

    4年前   
    810    0

    来自ISL的编码规则

    来自ISL(Integrate Service)网站的一份编码规则说明:以物料的编码为主线讲解编码的原则,但所讲编码原则同样适用于系统的客户编码、供货商编码、职员编码、部门编码、单位编码、仓库...

    11年前   
    621    0

    员工编码标准

     员工编码标准 第一条 本标准按公司机构图和岗位图自上而下,自左向右顺序来编排,员工编码共7位。 第二条 首位码为级别码:高管级为1,部门级为2,主管级为3,员工级为4。 第三...

    11年前   
    16598    0

    编码规范

    DELPHI编码规范 版本:1.0.0.0 编写:邱建伟 文件历史表 版本 作者 说明 完成日期 草稿 Jianweiqiu DELPHI编码规范 2004/7...

    7年前   
    19413    0

    LTE预编码设计开题报告

    1. 选题的目的及意义: 90年代初第三代移动通信技术(3G)的横空出世使得让多媒体服务的质量与应用得到广泛人的认可,随处可见的宽带覆盖网络给人们物质文化的提高带来了深远的意义,并且摒弃了环...

    5年前   
    1297    0

    农产品追溯编码设计

    农产品追溯编码设计研究背景    建立农产品追溯系统,促进中国农产品平安体系搭建是保障消费者食用农产品平安和提升农产品竞争力的重要手段。而统一编码是实现农产品追溯系统的根底。关于追溯码编码的研...

    2年前   
    402    0

    编码体系的设计原则

    编码体系的设计原则赛迪网-中国计算机报编码体系的建立应遵循以下设计原则:  1)信息分类编码体现科学化、标准化、规范化、合理化。  2)参照国家标准中有关分类标准体系。  3)参照企业原有的编...

    11年前   
    557    0

    74汉明码编码原理

     74汉明码编码 1. 线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若 冗余位是按线性...

    7个月前   
    223    0

    2023年数字与编码专题

    2023年数字与编码专题 第一篇:数字与编码专题 浙江省农村中小学现代远程教化工程资源建设多媒体教学课件 人教版版五上《数字与编码》教学设计 运用范围:小学数学〔人教版〕...

    1年前   
    327    0

    百合香农业种植专业合作社章程

      **县百合香农业种植专业合作社章程 【2013年3月28日召开设立大会,由全体设立人一致通过。】 第一章  总  则 第一条 为保护成员的合法权益,增加成员收入,促进本社发展,依照...

    11年前   
    10940    0

    化学实验报告

    化学实验报告  化学是一门以实验为基础的学科。化学上的许多理论和定律都是从实验中发现归纳出来的。同时,化学理论的应用、评价也有赖于实验的探索和检验。虽然到了近代乃至现代,化学的飞速进步已经产生...

    11年前   
    1036    0

    **学院实验报告

    实验内容:使用金融数据库查找宏观经济及行业相关数据,使用Excel进行作图分析。根据所得数据以及图形分析相关问题。实验目的:掌握金融数据库软件的相关使用,操作,快捷查找数据,能够制作美观图形,对于数据有效分析。

    3年前   
    677    0

    上机实验报告

    上机实验报告  一.     题目1.  建立一个学生档案,内容包括学号,姓名,年龄,性别,数学,物理和英语3门功课成绩。要求实现以下功能:1)        数据输入;2)        查...

    8年前   
    862    0

    教育实验报告

    教育实验报告  教育实验报告  对某种教育现象实验后,要对整个实验过程进行全面总结,提出一个客观的、概括的、能反映全过程及其结果的书面材料,即谓教育实验报告。教育实验报告可分为三部分:①前言。...

    12年前   
    740    0

    电路实验报告

    实验一 元件特性的示波测量法一、实验目的1、学习用示波器测量正弦信号的相位差。2、学习用示波器测量电压、电流、磁链、电荷等电路的基本变量3、掌握元件特性的示波测量法,加深对元件特性的理解。二...

    3年前   
    3050    0

    生物实验报告

    生物实验报告  实验   生物组织中还原糖、脂肪、蛋白质的鉴定  一、实验目的  初步掌握鉴定生物组织中还原糖、脂肪、蛋白质的基本方法。  二、实验原理  1.还原糖的鉴定原理  生物组织中普...

    9年前   
    826    0

    CADCAM实验报告

     二叉树的遍历实验一、实验名称:二叉树的遍历实验。二、实验目的:1、掌握CAD/CAM系统中常用的数据结构二叉树的概念、存储结构以及二叉树遍历技术。2、熟练应用C语言编写二叉树的建...

    4年前   
    942    0

    oracle实验报告

    《Oracle数据库设计与 实现》 总结报告 成绩:-------------- ...

    2年前   
    501    0

    爱情实验报告

    爱情实验报告  爱情实验报告   这学期要做一周的模块实验,我和欣儿分在一组,欣儿是班里的学习委员,负责收缴每天实验后大家必写的实验报告。    欣儿长的很美,碰到人总是浅浅地笑,不象有些女生...

    12年前   
    750    0

    文档贡献者

    文***品

    贡献于2022-11-14

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档