信息论与编码
学科论文
指导: XXXXX
主题:Java 下模拟香农编码
专业: 信息与计算科学
年级: XXX
姓名: XXX
学号: XXXXXXXX
目录
contents
1、绪论-----------------------------------------------------------V1
2、香农理论-----------------------------------------------------V1
3、在Java 环境下实现香农编码的模拟的条件----------V1
4、在java 环境下实现香农编码的模拟的变量一览-----V2
5、模拟实现的过程---------------------------------------------V3
6、应用与总结---------------------------------------------------V4
7、附(代码一览)---------------------------------------------V4
8、感谢-------------------------------------------------------------V5
1、绪论
摘要:1948年香农在Bell System Technical Journal上发表了《A Mathematical Theory of Communication 》。论文由香农和威沃共同署名。这篇奠基性的论文是建立在香农对通信的观察上,即“通信的根本问题是报文的再生,在某一点与另外选择的一点上报文应该精确地或者近似地重现”。这篇论文建立了信息论这一学科,给出了通信系统的线性示意模型,即信息源、发送者、信道、接收者、信息宿,这是一个新思想。此后,通信就考虑为把电磁波发送到信道中,通过发送1和0的比特流,人们可以传输图像、文字、声音等等。今天这已司空见惯,但在当时是相当新鲜的。他建立的信息理论框架和术语已经成为技术标准。他的理论在通信工程师中立即获得成功,并刺激了今天信息时代所需要的技术发展。
2、香农理论
3、在Java 环境下实现香农编码的模拟的条件
利用Java 虚拟机语言搭建循环环境,可以有条件的循环输出0或1,以实现最简单的二进制信源符号模拟。
运行环境
a.Win7 x86
Win7系统下实现Java 虚拟机的运行,完成编码及其可视化界面的输出。
b.Java 虚拟机版本7.0
最新版的Java 虚拟机,可以运行基于Java 语言编写的软件及其**.java等的类文件。
c.Eclipse 4.0
一个强大的Java 代码编译器,其中包含丰富的API 及其各种重构代码的方法,让编译者提高代
码的编辑效率。
技术条件
a. 熟练的使用Win7系统
这是一个系统的环境条件,是基础。
b. 熟练的掌握Java 虚拟机的有关知识
能够在Win7下正确的配置出环境变量,并学会测试环境变量是否配置成功,保证所编程序的胜利运行。
c. 能够运用java 语言编写简单的程序
掌握基础的Java 语言的语法等是基础的基础,别巧妇无米之炊。
4、在java 环境下实现香农编码的模拟的变量一览
具体说明
Int n
n 变量是限定一维数组变量gl[ ]是数组长度,以此来实现对信源长度的模拟,如信源长度为n ,则通过scanner 指令向gl[ ]赋n 个值得到信源概率组。
Double gl[ ]
gl[ ]变量是用来储存并通过for 循环排序信源概率组的各个概率值的,实现模拟信源概率组。
Int i,j
For 循环局部变量,通过循环简便的输入输出概率组的值。
Double c,gsum[ ]
c 变量为对概率组各个概率值进行降序排序时使用的中介变量,gsum[ ]变量为计算累加p (x i ) 的值,可以模拟第2个步骤p (x i ) 。
Int k[ ]
储存每一个k 值,实现计算k 值步骤。
Double a[ ]
动态的存储每一个码字, 然后把码字的值赋给Int xiangnong[ ][ ]变量,间接实现码字组的输出。
Int xiangnong[ ][ ]
动态的二维数组,储存并输出码字实现对香农编码码字的模拟。
5、实现过程图解
以下是在java 虚拟机下运行的几个实例
运行实例(输入长度为8的信源)
运行实例(输入长度为6的信源)
运行实例(输入长度为4的信源)
6、应用与总结
通过Java 环境下的模拟,可以让读者直观的看到信源信道上的编码过程。
总结:香农编码本质上就是一个信源概率组进行一系列的规则运算后得到的二进制数组
应用:1. 计算简单信源的码字。
2. 在教学过程中通过Java 语言的调试步骤,让学生更直观的香农编码的编码过程。
附(代码一览):
public class xiangnong {
public static void main(String[] args){ Scanner scan=new Scanner(System.in); int n; System.out.println("请输入编码的长度:"); n=scan.nextInt(); System.out.println("请输入你的概率:"); double gl[]=new double[n]; //gl[n]=scan.nextDouble(); for(int i=0;i
} } double gsum[]=new double[n]; gsum[0]=0; for(int i=1;i1){ xiangnong[i][j]=1; a[j]=a[j]-1; } xiangnong[i]=new int[k[i]]; k[i]=(int)Math.ceil(1-(Math.log(gl[i]/Math.log(2)))); System.out.print(k[i]+"\t"); gsum[i]=gsum[i-1]+gl[i-1]; else xiangnong[i][j]=0;
感谢 历时将近3天的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师--冉茂虎老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!
信息论与编码
学科论文
指导: XXXXX
主题:Java 下模拟香农编码
专业: 信息与计算科学
年级: XXX
姓名: XXX
学号: XXXXXXXX
目录
contents
1、绪论-----------------------------------------------------------V1
2、香农理论-----------------------------------------------------V1
3、在Java 环境下实现香农编码的模拟的条件----------V1
4、在java 环境下实现香农编码的模拟的变量一览-----V2
5、模拟实现的过程---------------------------------------------V3
6、应用与总结---------------------------------------------------V4
7、附(代码一览)---------------------------------------------V4
8、感谢-------------------------------------------------------------V5
1、绪论
摘要:1948年香农在Bell System Technical Journal上发表了《A Mathematical Theory of Communication 》。论文由香农和威沃共同署名。这篇奠基性的论文是建立在香农对通信的观察上,即“通信的根本问题是报文的再生,在某一点与另外选择的一点上报文应该精确地或者近似地重现”。这篇论文建立了信息论这一学科,给出了通信系统的线性示意模型,即信息源、发送者、信道、接收者、信息宿,这是一个新思想。此后,通信就考虑为把电磁波发送到信道中,通过发送1和0的比特流,人们可以传输图像、文字、声音等等。今天这已司空见惯,但在当时是相当新鲜的。他建立的信息理论框架和术语已经成为技术标准。他的理论在通信工程师中立即获得成功,并刺激了今天信息时代所需要的技术发展。
2、香农理论
3、在Java 环境下实现香农编码的模拟的条件
利用Java 虚拟机语言搭建循环环境,可以有条件的循环输出0或1,以实现最简单的二进制信源符号模拟。
运行环境
a.Win7 x86
Win7系统下实现Java 虚拟机的运行,完成编码及其可视化界面的输出。
b.Java 虚拟机版本7.0
最新版的Java 虚拟机,可以运行基于Java 语言编写的软件及其**.java等的类文件。
c.Eclipse 4.0
一个强大的Java 代码编译器,其中包含丰富的API 及其各种重构代码的方法,让编译者提高代
码的编辑效率。
技术条件
a. 熟练的使用Win7系统
这是一个系统的环境条件,是基础。
b. 熟练的掌握Java 虚拟机的有关知识
能够在Win7下正确的配置出环境变量,并学会测试环境变量是否配置成功,保证所编程序的胜利运行。
c. 能够运用java 语言编写简单的程序
掌握基础的Java 语言的语法等是基础的基础,别巧妇无米之炊。
4、在java 环境下实现香农编码的模拟的变量一览
具体说明
Int n
n 变量是限定一维数组变量gl[ ]是数组长度,以此来实现对信源长度的模拟,如信源长度为n ,则通过scanner 指令向gl[ ]赋n 个值得到信源概率组。
Double gl[ ]
gl[ ]变量是用来储存并通过for 循环排序信源概率组的各个概率值的,实现模拟信源概率组。
Int i,j
For 循环局部变量,通过循环简便的输入输出概率组的值。
Double c,gsum[ ]
c 变量为对概率组各个概率值进行降序排序时使用的中介变量,gsum[ ]变量为计算累加p (x i ) 的值,可以模拟第2个步骤p (x i ) 。
Int k[ ]
储存每一个k 值,实现计算k 值步骤。
Double a[ ]
动态的存储每一个码字, 然后把码字的值赋给Int xiangnong[ ][ ]变量,间接实现码字组的输出。
Int xiangnong[ ][ ]
动态的二维数组,储存并输出码字实现对香农编码码字的模拟。
5、实现过程图解
以下是在java 虚拟机下运行的几个实例
运行实例(输入长度为8的信源)
运行实例(输入长度为6的信源)
运行实例(输入长度为4的信源)
6、应用与总结
通过Java 环境下的模拟,可以让读者直观的看到信源信道上的编码过程。
总结:香农编码本质上就是一个信源概率组进行一系列的规则运算后得到的二进制数组
应用:1. 计算简单信源的码字。
2. 在教学过程中通过Java 语言的调试步骤,让学生更直观的香农编码的编码过程。
附(代码一览):
public class xiangnong {
public static void main(String[] args){ Scanner scan=new Scanner(System.in); int n; System.out.println("请输入编码的长度:"); n=scan.nextInt(); System.out.println("请输入你的概率:"); double gl[]=new double[n]; //gl[n]=scan.nextDouble(); for(int i=0;i
} } double gsum[]=new double[n]; gsum[0]=0; for(int i=1;i1){ xiangnong[i][j]=1; a[j]=a[j]-1; } xiangnong[i]=new int[k[i]]; k[i]=(int)Math.ceil(1-(Math.log(gl[i]/Math.log(2)))); System.out.print(k[i]+"\t"); gsum[i]=gsum[i-1]+gl[i-1]; else xiangnong[i][j]=0;
感谢 历时将近3天的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师--冉茂虎老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!