基于MATLAB GUI的香农编码设计

郭思梦+张祥林
【摘 要】通过MATLAB的图形用户界面对香农编码过程进行设计制作,完成要求如下:输入任意符号文本,计算出每个符号的概率,同时计算出信源熵,通过香农编码的方法为每个符号进行编码,并显示在界面中,最后计算得出编码效率。该方法使得操作过程更加方便,计算结果更加直观。
【Abstract】The Shannon Coding process is designed by MATLAB graphical user interface,and the requirements are as follows: entering any symbolic text, calculating the probability of each symbol, and calculating the entropy of the source, using the method of Shannon Coding to encode for each symbol, and displaying them in the interface, finally , calculating the encoding efficiency. This method makes the operation process more convenient and the calculation results more intuitive.
【關键词】香农编码;GUI;信源熵;编码效率
【Keywords】 Shannon Coding; GUI; source entropy; coding efficiency
【中图分类号】TN911 【文献标志码】A 【文章编号】1673-1069(2017)09-0157-02
1 引言
MATLAB中没有专门用来计算香农编码的函数,因此在编程计算中具有程序复杂、修改困难、不直观等缺点。本文利用MATLAB图形用户界面的操作灵活及效果直观的优点,按照计算香农编码的具体流程,通过录入用户的键盘输入,将符号概率、信源熵、香农编码及编码效率依次显示在图形用户界面上,该方法灵活直观、方便对比。实现香农编码的流程图如图1所示。
2 香农编码的GUI设计
在通信系统中,通常要通过信源编码来提高信息传输的有效性。香农编码是其中一种编码方法,又称可变长无失真信源编码[1]。香农编码将原始信源符号转化为新的码符号,使码符号尽量服从等概分布,从而每个码符号所携带的信息量达到最大,进而可以用尽量少的码符号传输信源信息[2]。
MATLAB的GUI(Graphical User Interfaces)是一个由坐标轴、按钮、级联菜单、动静态文本等图形对象组成的一个用户与计算机交互的图形窗口。用户通过编写程序,激活这些图形对象,使计算机实现相应的变化,以完成用户需要的功能。比如,实现计算和图像显示等。该 GUI 界面使用了11个静态文本、23个可编辑文本、4个按钮。其中“输入符号序列”、“q”、“w”、“e”等为静态文本;“计算符号概率”、“香农编码”、“计算信源熵”、“编码效率”为按钮,用来实现程序的运行;其余模块均为可编辑文本,用来实现数据的输入与输出。图2是未点击功能控件时的空GUI[3]。
3 香农编码的实现过程
在“输入符号序列”右侧的可编辑文本框中输入任意符号序列,点击“计算符号概率”按钮,即可在“q”、“w”、“e”等字母的右侧可编辑文本中显示出对应的符号概率,点击“计算信源熵”按钮,即可在右侧可编辑文本框中显示出信源熵的数值,点击“香农编码”按钮,相应的码字即会显示在对应的文本框中,最后点击“计算编码效率”按钮,即可得出香农编码效率。
4 程序的编写
程序的编写需要分模块来进行。
按照先后顺序,首先需要对“输入符号序列”右侧的可编辑文本框进行程序的编写,需要实现的功能是:接收计算机键盘输入的符号序列,并将其保存为一个变量。
接下来是“计算符号概率”按钮的程序的编写。由公式:概率p=样本数n/总体N,可知应当首先统计每个符号出现的次数及符号序列的总长度,再进行除法运算即可得到每个符号的概率。
然后是计算信源熵。信源熵计算公式为:H(x)=-p(xi)logp(xi)。将该公式编入程序,即可实现信源熵的计算。
最重要也最复杂的一步是香农编码的程序编写。香农编码的具体过程如下:
①将信源消息符号按其出现的概率大小依次排列为p1≥p2≥…≥pn。
②确定满足下列不等式的整数码长Ki为-lb(pi)≤Ki≤lb(pi)+1。
③为了编成唯一可译码,计算第i个消息的累加概率Pi=p(ak)。
④将累加概率Pi变换成二进制数。
⑤取Pi二进制数的小数点后Ki位即为该消息符号的二进制编码。
5 结语
本文设计了一种基于MATLAB GUI的香农编码,将香农编码的具体步骤直观化,通过用户任意键入字符,即可计算出每个字符出现的概率,同时根据得到的信源熵计算香农编码及编码效率,大大简化了计算过程,提高了计算效率[4]。
【参考文献】
【1】曹雪虹.信息论与编码[M].北京:清华大学出版社,2009.
【2】邵军花,刘玉红,邸敬,等.香农编码的优化算法研究[J].兰州交通大学学报,2010,29(6):110-113.
【3】邱金蕙,王矞辉,李振全.基于Matlab/GUI的新型界面开发方式[J].河北工业科技,2008,25(4):233-235.
【4】余结,王防修,胡迪,等.一种香农编码优化算法的改进[J].武汉轻工大学学报,2015(2):83-86.
相关文章!
  • 基于企业文化的国企思想政治工

    陈广梅中图分类号:D641 文献标识:A 文章编号:1674-1145(2019)4-081-02摘 要 新形势下,党对国有企业思想政治工作提出更高的要求,需要

  • 一次为中国革命延续火种的伟大

    朱强今年11月12日是我国伟大的革命先行者孙中山先生诞辰150周年。在孙中山先生早期的革命生涯中,有一段流亡海外的经历,这段经历见证了

  • 周强:在县域治理中发挥好司法

    大数据时代,司法案件运行情况成为县域经济社会发展的晴雨表。法院将海量案件信息进行大数据分析,从刑事案件判断治安状况,从民商事案件