ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:95.97KB ,
资源ID:16515200      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16515200.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息与编码实验教案Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信息与编码实验教案Word格式文档下载.docx

1、O 0.0654L 0.029V 0.008A 0.063C 0.023K 0.003N 0.059F,U 0.0225X 0.002I 0.055M 0.021J,Q,Z 0.001R 0.054P 0.0175实验内容:1. 将一大段英文文章作为要统计的样本文件2. 对样本文件进行一维概率统计,并计算出信源熵及冗余度3. 对样本文件进行二维概率统计,并计算出信源熵及冗余度在进行统计时,首先要在程序中打开文件,然后对文件中的字符读入程序中,进行统计。而在二维统计时,尤其要求对文件的指针操作要熟悉。如读入 “newspaper”时,应该依次读入 “ne ew ws sp pa ap pe er

2、”,而如果使用fgetc()等命令读文件时,读入的是 “ne ws pa pe” 为了依次读入“ne ew ws sp pa ap pe er”,就要求在每次调入fgetc()等命令后,再将文件指针往后退一步,即要求学生能熟练使用fseek()命令进行指针定位操作。二维信源熵程序如下:#include math.hstdlib.h#define NULL 0int charge(char c)int n; if(c=65&c+97&=122) n=c-97; return n; else return -1;void main() int count2626=0; char zifu1,zif

3、u2; int i,n,m,j; int sum=0; float q, sum1=0; FILE *fp; If(fp=fopen(“file”, “rb”)=NULL) printf(“ cant open file!n”); exit(0); while(!feof(fp) zifu1=fgetc(fp); n=charge(zifu1); if(n!= -1) zifu2=fgetc(fp); m=charge(zifu2); if(m! countnm+; fseek(fp,-1,1); fclose(fp); for(i=0;i26;i+) for(j=0;jj+) sum=sum

4、+countij; printf(“the number of all the code is %dn”, sum); q=(float)sum; if(j%3=0) printf(“n”); printf(“%c%c,%4d, %6.5f% ”,i+97,j+97,countij,countij*100/q); printf(“n”); if(countij)sum1=sum1+(float)(countij/q)*log10(1/(double)(countij /q)/log10(double)(2); printf(“n 信息熵为: H(x)=%fn”, sum1);实验要求:1) 自

5、己生成一个英文文件,可以在网上找,也可以自己生成。为了保证实验数据的可靠性,数据的量要比较大。为了保证二维信源统计的可靠性,建议文件的英文字符在十万以上。2) 编写一维信源统计程序,得出一维统计频次,计算信源熵及剩余度。3) 编写二维信源统计程序,得出二维统计频次,计算信源熵及剩余度。4) 提交二维信源剩余度的实验报告,及实验体会心得。实验二、香农编码Hfffman编码、Fano编码以及 Shannon编码是重要的统计编码形式,在信源编码中具有重要的作用。由于 Huffman 编码在数据结构课程中已经出现。 因此,选用 Shannon编码为主要练习对象。Shannon 码编码步骤为:1. 将信

6、源的所有符号按概率从大到小排列: 2. 对第个信源符号取整数码长,为取整运算3. 计算累加概率4. 将变换成二进制数,并按步骤2中计算的长度取的二进制系数,组合起来即为的香农码字.程序如下:#includedouble P6=0.25,0.1,0.2,0.25,0.15,0.05,Pax6,machang6; double temp; for(int a=1;a6;a+) for(int i=0;6-a; if(PiPi+1) temp=Pi; Pi=Pi+1; Pi+1=temp; coutPi ;endl; Pax0=0.0; Paxi+1=Paxi+Pi;概率累加和为: coutPaxi

7、 for(i=0; double m=log(1/Pi)/log(2); if(m-int(m)=0) machangi=log(1/Pi)/log(2); else machangi=int(m)+1; cout的码长为:machangi0) Paxi=Paxi*2-1; continue; if(Paxi*2-1)=0) Paxi=Paxi*2-1; Paxi=Paxi*2; 1) 熟练掌握香农编码的原理2) 掌握二进制小数的输出方法3) 如果时间允许,建议完成Huffman编码的程序设计。4) 完成香农编码的实验报告及实验心得体会。实验三、循环码循环码是线性分组码的一种,具有较好的数学特

8、征,可以用代数理论对循环码进行研究。在循环码的编码与校验过程中,上多项式的除法是重要环节。在徐士良的常用算法程序集(C语言描述)中,有实系数的多项式除法。对其进行改进,使其系数定义在上,可很好地实现循环编码及校验的要求。完成二进制多项式除法的设计,程序中其中, 在循环码中,只需保留多项式相除的余式即可。下面的程序中, ,最后余式#include stdio.hjiajian(a,b)int a,b; if(a=1&b=1) return(0); if(a=0&b=1) return(1); if(a=1&b=0) return(1);b=0) return(0);cheng(a,b) chu(

9、a,b) if (a=1& if(a=0) return(0);void pdiv(p, m, q, n, s, k, r, l)int m,n,k,l,p ,q ,s ,r ; int i,j,mm,ll,kk; i=1; i-) si-1=chu(pll,qn-1); mm=ll; for (j=1; j p,yi % = p ;如果yi 0;yi += p;(确保运算的对象范围均在( 0, p ) 上)(iii) 对Step2 对k=1, 2, (i) Step3 输出范德蒙方程组的解x=b./ 看程序之前,请仔细阅读解有限域上范德蒙方程组算法思想,如上/ 运算过程确保每一步运算的数均在

10、(0, p )内.malloc.hstdlib.hint prime=7 ; /全局变量,确定上限素数void Vandermond(int n,int* x,int* y); /函数解范德蒙方程组,解即为所要求的系数int Inverse(int xx); /求逆元void main() /主函数入口int n=3;int x3=1, 2, 4;int y3=2, 6, 5;Vandermond(n, x, y); /调用函数求解系数,并存入数组y中void Vandermond(int n,int *x,int *y) /解范德蒙方程组,以获取系数,并存入原数组y中 int yy, xx;

11、 /定义中间变量, 以确保每一步运算中间产生的数均在(0,p)范围内. int temp; / for(int k=0;kk;-i) yy=yi-yi-1; xx=xi-xi-k-1; if(yy%xx=0) yi=yy/xx; /判断xx是否整除yy,否则取yy乘以其逆元 if(yiprime) yi%=prime; else if( yi =0; -k) for( int i=k; +i ) temp=yi+1*xk; if(temp prime) temp %= prime; if(temp if(yiyi+=prime;解为 :);+i) printf(%dt, yi); /输出系数/ 求x的逆元/ 令i=1,2.p,如果满足x*i%p=1, i即为x的逆元int Inverse( int xx ) /求xx逆元 if( xx0 ) xx %= prime; xx += prime; for( int i=1;prime; i+) temp = xx*i; if( temp % prime=1 ) return i;return 0;1) 理解有限域的概念及有限域上的四则运算2) 用程序实现有限域上的方程组的解法。3) 完成实验报告及实验心得体会。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1