基于MATLAB的循环码实验报告

合集下载

matlab(74)汉明码和(74)循环码的编程设计

matlab(74)汉明码和(74)循环码的编程设计

二、创新实验设计创新实验一:(7,4)汉明码的编码与译码实现1、实验目的实现(7,4)汉明码的编码与译码,通过这次实验不但加深了对汉明码编码和译码原理了解,而且对线性分组码有所了解。

2、实验原理线性分组码的构造方法比较简单、理论较为成熟,应用比较广泛。

汉明码是一种能够纠正一个错码的效率比较高的线性分组码,下面以(7,4)码为例就汉明码的编码与译码分别进行介绍:(1)编码原理一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。

若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求21r n -≥或211rk r -≥++ (1)设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。

若取r=3,则n=k+r=7。

这样就构成了(7,4)码。

用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,则123s s s 的值与错误码元位置的对应关系可以规定如表1所列。

表2.1 校正子和错码位置的关系则由表1可得监督关系式:16542s a a a a =⊕⊕⊕()226531s a a a a =⊕⊕⊕()3 36430s a a a a =⊕⊕⊕()4 在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、0a 应根据信息位的取值按监督关系来确定,为使所编的码中无错码,则123,,S S S 等于0,即65426531643000(5)0a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩方程组(5)可等效成如下矩阵形式6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(6)式(6)可简化为0T T HA =,H 为监督矩阵,则由式(6)可得到监督矩阵11101001101010=[P I ] (7)1011001r H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦因为生成矩阵'=[I Q]=[I ]k k G P ,所以由(7)得生成矩阵G 如下:[]k 10001110100110[']00101010001011k G I Q I P ⎡⎤⎢⎥⎢⎥===⎢⎥⎢⎥⎣⎦然后利用信息位和生成矩阵G 相乘产生整个码组,即有[][]65432106543=(8)A a a a a a a a a a a a G=其中A 为整个码组矩阵,6543a a a a 是信息位。

MATLAB实验报告(1-4)

MATLAB实验报告(1-4)

信号与系统MATLAB第一次实验报告一、实验目的1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。

2.学会运用MATLAB表示常用连续时间信号的方法3.观察并熟悉一些信号的波形和特性。

4.学会运用MATLAB进行连续信号时移、反折和尺度变换。

5.学会运用MATLAB进行连续时间微分、积分运算。

6.学会运用MATLAB进行连续信号相加、相乘运算。

7.学会运用MATLAB进行连续信号的奇偶分解。

二、实验任务将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。

三、实验内容1.MATLAB软件基本运算入门。

1). MATLAB软件的数值计算:算数运算向量运算:1.向量元素要用”[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。

2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn 为结束值。

矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开;矩阵的不同行之间必须用分号”;”或者ENTER分开。

2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。

3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。

举例:计算一个函数并绘制出在对应区间上对应的值。

2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名”2.MATLAB软件简单二维图形绘制1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y)2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p表示第p个区域,表达为subplot(mnp)或者subplot(m,n,p)3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin])4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’)5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’)6).输出:grid on举例1:举例2:3.matlab程序流程控制1).for循环:for循环变量=初值:增量:终值循环体End2).while循环结构:while 逻辑表达式循环体End3).If分支:(单分支表达式)if 逻辑表达式程序模块End(多分支结构的语法格式)if 逻辑表达式1程序模块1Else if 逻辑表达式2程序模块2…else 程序模块nEnd4).switch分支结构Switch 表达式Case 常量1程序模块1Case 常量2程序模块2……Otherwise 程序模块nEnd4.典型信号的MATLAB表示1).实指数信号:y=k*exp(a*t)举例:2).正弦信号:y=k*sin(w*t+phi)3).复指数信号:举例:4).抽样信号5).矩形脉冲信号:y=square(t,DUTY) (width默认为1)6).三角波脉冲信号:y=tripuls(t,width,skew)(skew的取值在-1~+1之间,若skew取值为0则对称)周期三角波信号或锯齿波:Y=sawtooth(t,width)5.单位阶跃信号的MATLAB表示6.信号的时移、反折和尺度变换:Xl=fliplr(x)实现信号的反折7.连续时间信号的微分和积分运算1).连续时间信号的微分运算:语句格式:d iff(function,’variable’,n)Function:需要进行求导运算的函数,variable:求导运算的独立变量,n:求导阶数2).连续时间信号的积分运算:语句格式:int(function,’variable’,a,b)Function:被积函数variable:积分变量a:积分下限b:积分上限(a&b默认是不定积分)8.信号的相加与相乘运算9.信号的奇偶分解四、小结这一次实验让我能够教熟悉的使用这个软件,并且能够输入简单的语句并输出相应的结果和波形图,也在一定程度上巩固了c语言的一些语法。

matlab课设循环码的性能分析范文

matlab课设循环码的性能分析范文
(3)cyclpoly函数
功能:生成循环码的生成多项式。
语法:p=cyclpoly(N,K);
p=cyclpoly(N,K,fd_flag);
说明:从p=cyclpoly(N,K)中可找到一个给定码长N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。
通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过MODEM传输文件的协议如ZMODEM、XMODEM协议中均用到了CRC校验技术。在磁盘、光盘介质存储技术中也使用该方法。
2.1.3 循环码的生成矩阵和一致校验矩阵
对所有的i=0,1,2,……k-1,用生成多项式g(x)除 ,有:
(2—7)
式中 是余式,表示为:
(2—8)
因此, 是g(x)的倍式,即 是码多项式,由此得到系统形式的生成矩阵为:
(2—9)
它是一个k n阶的矩阵。
同样,由G =0可以得到系统形式的一致校验矩阵为:
循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码( Grey Code )。

实验二MATLAB程序设计含实验报告

实验二MATLAB程序设计含实验报告

实验二MATLAB 程序设计一、 实验目的1.掌握利用if 语句实现选择结构的方法。

2.掌握利用switch 语句实现多分支选择结构的方法。

3.掌握利用for 语句实现循环结构的方法。

4.掌握利用while 语句实现循环结构的方法。

5.掌握MATLAB 函数的编写及调试方法。

二、 实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。

M 文件的编写:启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。

点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正三、 实验内容1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。

并输入几组典型值加以检验。

(提示:提示输入使用input 函数)2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。

其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。

要求:(1)用switch 语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

(提示:注意单元矩阵的用法)3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。

重复此过程,最终得到的结果为1。

如:2?13?10?5?16?8?4?2?16?3?10?5?16?8?4?2?1运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。

请为关键的Matlab 语句填写上相关注释,说明其含义或功能。

MATLAB实验报告

MATLAB实验报告

MATLAB 实验报告一、实验名称实验6 程序设计(1)二、实验目的:熟悉和掌握MA TLAB 的m 文件程序和程序设计。

三、实验内容:1.for 循环结构%m 文件的使用:新建一个m 文件将下面的语句复制进去,保存成m 文件,假如文件名是“xunhuan ”,则只需在matlab 窗口中输入“xunhuan ”然后回车即可执行其中的内容,关于m 文件的使用方法下同for i=1:10; %i 的数值是从1到10,默认间隔是1 x(i)=i; %矩阵x 第i 个数的数值赋值i end; %结束循环x %输出矩阵x 的值2.while 循环结构Fibonaci 数组的元素满足Fibonacci 规则:);,2,1k (,a a a 1k k 2k =+=++且1a a 21==。

现要求该数组中第一个大于10000的元素。

a(1)=1;a(2)=1;i=2; %赋初始值while a(i)<=10000 %设定语句结束条件a(i+1)=a(i-1)+a(i); %利用给出的前后数的关系赋值 i=i+1; %循环控制变量每次自加1 end; %结束循环i ,a(i) %输出符合条件的i 值和a(i)值3.if-else-end 结构cost=10;number=12; %赋初始值 if number>8 %如果+条件 sums=number*0.95*cost; %计算公式end,sums %结束循环,输出sums 的值4.编写一个脚本文件和函数文件并调用,说明其调用方式以及各自的工作空间的不同。

脚本文件stat1.m%脚本文件%求阵列x 的平均值 %[m,n]=size(x); if m==1 m=n; ends=sum(x);mean=s/m;函数文件stat2.mfunction[mean1]=stat2(x) %函数文件%求阵列x的平均值%调用格式为%[mean]=stat2(x)%[m,n]=size(x);if m==1m=n;ends=sum(x);mean=s/m然后在,MATLAB下执行这两个文件,在MA TLAB中输入>>clear all>>x=rand(4,4)+2;>>stat1执行后检查基本工作空间的变量情况:>>whosName Size Bytes Classm 1x1 8 double arraymean 1x4 32 double arrayn 1x1 8 double arrays 1x4 32 double arrayx 4x4 128 double arrayGrand total is 26 elements using 208 bytes这说明,在脚本文件中产生的变量都保存在基本工作空间。

matlab课设 循环码的性能分析

matlab课设 循环码的性能分析

课程设计任务书题目: 循环码的性能分析初始条件:MATLAB 软件,电脑,通信原理知识要求完成的主要任务:输入信号:速率为100Bd的矩形信号;信道:AWGN;要求:1、画出编码器输入、输出信号,信道的输出信号,译码器的输出信号的波形、频谱2、画出误码率与译码器输入信噪比的关系曲线;时间安排:1、第十三周:查阅资料2、第十四周:仿真及撰写报告。

3、第十五周:答辩指导教师签名:2011 年12 月15 日系主任(或责任教师)签名:2011 年12 月15 日目录摘要 .................................................................................................................... - 3 - Abstract .................................................................................................................... - 4 -1 引言 ...................................................................................................................... - 5 -2 设计原理 .............................................................................................................. - 6 -2.1 循环码介绍 ................................................................................................ - 6 -2.1.1 循环码的多项式表示 ...................................................................... - 6 -2.1.2 (n,k)循环码的生成多项式 ............................................................ - 7 -2.1.3 循环码的生成矩阵和一致校验矩阵 ............................................ - 7 -2.2 循环码编码原理 ...................................................................................... - 8 -2.3 循环码的纠错原理 .................................................................................... - 9 -3 程序与SIMULINK仿真................................................................................ - 12 -3.1程序 ........................................................................................................... - 12 -3.1.1程序函数介绍 ................................................................................. - 12 -3.1.2 各部分程序说明 ............................................................................ - 13 -3.1.3运行结果 ......................................................................................... - 14 -3.2 SIMULINK仿真...................................................................................... - 16 -3.2.1 SIMULINK电路图........................................................................ - 17 -3.2.2模块参数设置 ................................................................................. - 18 -3.2.3 仿真波形 ........................................................................................ - 19 -3.2.4 仿真结果分析 ................................................................................ - 24 -4 小结 .................................................................................................................... - 25 - 参考文献 ................................................................................................................ - 26 -摘要循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。

基于MATLAB的(15,7)循环码的编译仿真

基于MATLAB的(15,7)循环码的编译仿真

《纠错码与差错控制》课程设计题目:基于MATLAB的(15,7)循环码的编译仿真院(系)信息科学与工程学院专业通信工程专业届别 2011级班级 11通信B学号 **********姓名刘珩指导老师周林摘要随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。

在计算机通信信息码中循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。

它有许多特殊的代数性质,它使计算机通信以一种以数据通信形式出现,实现了在计算机与计算机之间或计算机与终端设备之间进行有效的与正确地信息传递。

它是现代计算机技术与通信技术飞速发展的产物,在日常生活通信领域被广泛应用。

纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。

仅用来发现错误的码一般常称为检错码。

为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别 ,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。

关系的建立称为编码。

码字到达收端后,可以根据编码规则是否满足以判定有无错误。

当不能满足时,按一定规则确定错误所在位置并予以纠正。

纠错并恢复原码字的过程称为译码。

检错码与其他手段结合使用,可以纠错。

纠错编码又称信道编码,它与信源编码是信息传输的两个方面。

它们之间存在对偶的关系。

应用信道译码直接对一些自然信息进行处理,可以去掉剩余度,以达到压缩数据的目的。

为了使一种码具有检错或纠错能力,必须对原码字增加多余的码元,以扩大码字之间的差别,使一个码字在一定数目内的码元上发生错误时,不致错成另一个码字。

准确地说,即把原码字按某种规则变成有一定剩余度的码字,并使每个码字的码元间有一定的关系。

关系的建立称为编码。

码字到达收端后,用编码时所用的规则去检验。

如果没有错误,则原规则一定满足,否则就不满足。

matlab实验报告(实验5)

matlab实验报告(实验5)
学生实验报告
一、 实验目的
开课学院及实验室:机电学院
2012 年 12 月 28 日
机电学
学院

实验课程名称
年级、专 业、班
1、 掌握 M 脚本文件和函数文件的创建方法,理解两者在形式上和运行上的区别; 2、 理解基本空间和函数空间的含义。 3、 掌握以控制流进行 MATLAB 程序设计的方法以及向量化程序设计方法,了解两者之间的异同; 二、
为频域抽样间隔, 2 1 为带宽。 K
四、实验报告要求
1、简述实验目的、实验原理及其要点; 2、把所有实验内容涉及的指令都以 M 文件方式创建并运行,保存实验结果图形。 3、总结实验中的主要结论。
按照实验内容 1 定义的 f(t)及时域采样方式,并取频域抽样点数 K=100,利用 MATLAB 编程,使用 for 循 环结构计算 F ( ) 在 [8 ,8 ] 在各个频域采样点的值,并画出其频谱图形。
T N 1 F (1 k ) f (t1 nt )e j (1 k )(t1 nt ) N n 0
其中,
(2.1)
根据以上两个等式,利用 MATLAB 编程,使用向量化计算的方法重新完成实验内容 2 和实验内容 3,并把计算结 果与实验内容 2 和实验内容 3 的结果进行比较是否相同(通过计算两者之间的最大绝对误差,观察其值是否接 近 0) 。 6、利用实验内容 5 的代码,把傅里叶变换和傅里叶逆变换分别写为两个 M 函数文件,函数定义形式为: function [F, w] = Fourier_lab2(f, N, T, K) function [f, t] = iFourier_lab2(F, K, W, N) 其中,f 为时域信号,t 为对时域信号 f 的采样点(即采样时刻) 为对时域信号 f 的采用点数,T 为 f 的 ,N 持续时间,K 为频域采样点数,F 为 f 的傅里叶变换,w 为对 F 的频域采样点,W 为 F 的频域带宽。 利用以上两个函数,写出 M 脚本文件重新完成实验内容 5。

MATLAB实验报告编程

MATLAB实验报告编程

实验名称MATLAB编程实验目的和要求:1、熟悉MATLAB的编程。

2、掌握定义和调用MA TLAB函数的方法。

3、掌握利用if语句、switch语句实现选择结构的方法。

4、掌握for语句、while语句实现循环结构的方法。

实验内容和步骤:1、输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s');if c>='A'&c<='Z'disp(setstr(abs(c)+1));else if c>='a'&c<='z'disp(setstr(abs(c)-1));else if c>='0'&c<='9'disp(abs(c)-abs('0'));elsedisp(c);endendend运行结果:请输入一个字符aeyhjgfhgdfgsdfgdxgifegfcefrcef请输入一个字符WEWERETRYTRUYTXFXFSFUSZUSVZU请输入一个字符45445454794 5 4 4 5 4 5 4 7 92、已知5个学生4门功课的成绩,求每名学生的总成绩。

s=0;a=[65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87]for k=as=s+k;enddisp(s);运行结果:a =65 76 56 7898 83 74 8576 67 78 7998 58 42 7367 89 76 872753403002713193、已知多项式h=x^6-10x^5+31x^4-10x^3-116x^2+200x-96,求其根程序:h=roots([1 -10 31 -10 -116 200 -96])运行结果:h =-2.00004.00003.00002.00002.00001.00004、从键盘输入一个三位整数,将它反向输出。

matlab课程设计--循环码的性能分析

matlab课程设计--循环码的性能分析

matlab课程设计--循环码的性能分析课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 循环码的性能分析初始条件:MATLAB,速率为100Bd的矩形输入信号,AWGN信道要求完成的主要任务:1、画出编码器输入、输出信号,信道的输出信号,译码器的输出信号的波形、频谱。

2、画出误码率与译码器输入信噪比的关系曲线;时间安排:1、第十三周:查阅资料2、第十四周:仿真及撰写报告。

3、第十五周:答辩指导教师签名:2011 年12 月15 日系主任(或责任教师)签名:2011 年12 月15 日目录摘要 (4)Abstract (6)1 Matlab简介 (8)2 设计项目分析 (9)2.1 数字通信系统模型 (9)2.2 数字基带系统 (10)2.3 AWGN信道 (11)2.4 循环码 (12)2.5 误码率和信噪比 (21)3.matlab建模设计 (21)3.1 信源模块 (21)3.2 循环码编码 (22)3.3 awgn信道加噪 (24)3.4循环码译码 (25)3.5误码率与信噪比 (26)3.6功率谱 (28)4.总结 (34)参考文献 (35)附录程序清单 (36)摘要循环码是线性分组码中一种重要的编码。

它是在严密的代数理论基础上建立起来的。

其编码和解码相对简单,但检(纠)错的能力较强。

循环码除了具有线性码的一般性质外,还具有循环性。

目前发现的大部分线性码与循环码有密切关系,本设计利用MATLAB对信号源序列生成,循环码编解码过程,AWGN信道加噪过程建模,分析各个模块波形与功率谱,并画出误码率与信噪比关系曲线。

对仿真数据,波形进行综合分析,达到设计目的。

关键词:MATLAB,循环码,AWGN,方波AbstractCycle code is one of the important code between linear block code,which is built on the base of strict algebraic theory.Its coding and decoding is relatively simple,but takes advantage of error detection and correc- tion.Besides of university of linear block code,cycle code is provided with cyclicity.Most of known linear code is closely related to this code.This design model sequence generating as information source,coding and decoding of cycle code,process of adding noise to information channel all by utilizing MATLAB.Waveform and power spectrum of each module are analyzed,relation curve of between SNR and error rate is printed. Comprehensive analysis of the simulation waveforms and data leads to accomplishment of purpose for design.Key words:MATLAB,cycle code,AWGN channel,square wave1 Matlab简介MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

利用Matlab实现循环码编码

利用Matlab实现循环码编码

利用Matlab实现循环码编码
一. 实验目的:利用matlab验证循环码的编码方法
二. 实验要求:求出x15+1的所有因式,从中选择一个11次因式作为构造(15,4)循环码的生成多项式,用matlab编码得到所有许用码组。

三.实验源码
clear all;
close all;
n=15;
k=4;
p=cyclpoly(n,k,'all');
[H,G]=cyclgen(n,p(1,:));
Msg=[0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1;0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1;
1 0 0 0;1 0 0 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;
1 1 1 1 ];
C = rem(Msg*G,2)
该编码主要利用了matlab的3个系统函数:
函数1:cyclpoly(n,k,’all’),返回(n,k)循环码的所有生成多项式(1个生成多项式为返回矩阵的1行)。

函数2:cyclgen(n,g),当生成多项式为向量g时,返回循环码的监督矩阵和生成矩阵。

函数3:rem(msg*G,2),当生成矩阵为G,信息矩阵为m sg时,返回循环码的所有需用码组。

循环码matlab实验报告

循环码matlab实验报告

信道编码仿真作业关于(15,7) 循环码实验一、实验原理1. (15,7)循环码码长 n=15 ,信息位 k=7 的循环码。

2. 生成多项式生成多项式:()1111n k n k n k g x x g x g x -----=++++对于(15,7)循环码,可用的码多项式共有3个: 87641()1g x x x x x =++++8422()1g x x x x x =++++875433()1g x x x x x x x =++++++编写的matlab 程序子函数 g=gx(n,k) 可以生成任意 (n,k) 循环码的所有生成多项式。

程序核心算法是()|1n g x x -遍历查找符合的()g x ,其中二元域的除法用的是通信工具箱中的 gfdeconv() 函数。

本实验最后用的是8764()1g x x x x x =++++。

3. 生成矩阵与校验矩阵程序用到的标准生成矩阵原理与方法如下:11220(())(())()[](())n k n k K n k x r x x r x G x I P x r x -----⎡⎤+-⎢⎥+-⎢⎥==⎢⎥⎢⎥⎢⎥+-⎣⎦其中()()()n i k i g x r x rem x --=。

则校验矩阵为:[]T n k H P I -=求余同样用到了gfdeconv() 函数。

4.最小距离与纠错能力通过校验矩阵H分析最小距离d,程序的算法是:取遍H的任意2列相加,若结果为0,则d=2;否则取遍H的任意3列相加,若结果为0,则d=3;以此类推,直到找到最小的d,使存在H的某d列相加结果为0。

5.编码器r级编码器采用g(x)k级编码器采用h(x).具体算法见之后的程序说明6. 译码器译码器为能纠正两个错误的梅吉特电路。

我分别编写了了2n 拍和3n 拍的译码电路,具体验证了修正线的作用。

7. 调制本实验所谓的调制只是将 1 变换为 -1,将 0 变换为 1。

matlab实习实验报告

matlab实习实验报告

实验报告: 分支语句一、 实验目的: 1.掌握使用分支语句;2.掌握自上而下程序设计技术方法.二、 实验内容及要求:1.实验内容:1).编写 MATLAB 语句计算 y(t)的值⎩⎨⎧<+≥+-=0530 53)(22t t t t t y 已知 t 从-5到 5 每隔0.5取一次值。

运用循环和选择语句进行计算。

2).用向量算法解决练习 1, 比较这两个方案的耗时。

三、 设计思路:1. 用循环和选择语句进行计算:1).定义自变量t :t=-5:0.5:5;2).用循环语句实现对自变量的遍历。

3).用选择语句实现对自变量的判断,选择。

4).将选择语句置入循环语句中,则实现在遍历中对数据的选择,从而实现程序的功能。

2. 用向量法实现:1).定义自变量t :t=-5:0.5:5;2).用 b=t>=0 语句,将t>=0得数据选择出,再通过向量运算y(b)=-3*t(b).^2 + 5; 得出结果。

3).用取反运算,选择出剩下的数据,在进行向量运算,得出结果。

四、 实验程序和结果1.实验程序clear%clctic;t=-5:0.5:5;for ii=1:size(t,2)columns.if(t(ii)<0)y(ii) = 3*t(ii)^2+5;elsey(ii)= -3*t(ii)^2+5;endendfigure(1);plot(t,y);title('Plot of y(t) and its derivative----(1)');xlabel('x');ylabel('y');grid on;toc; %Read the stopwatch timer,%prints the number of seconds required for the operation. clear%clctic;t=[-5:0.5:5];b=t>=0;y(b)=-3*t(b).^2 + 5;%b=t<0;y(~b)=3*t(~b).^2 + 5;figure(2);plot(t,y);title('Plot of y(t) and its derivative----(2)');xlabel('x');ylabel('y');grid on;toc;2.实验结果:>> clear>> y_tElapsed time is 0.998095 seconds.Elapsed time is 0.338708 seconds.>>五、实验总结:本次实验分支语句的使用和自上而下的程序设计技术。

循环编码实验报告

循环编码实验报告

一、实验目的1. 理解循环编码的概念和原理;2. 掌握循环编码的实现方法;3. 通过实验验证循环编码的效率和性能;4. 分析循环编码在实际应用中的优势和局限性。

二、实验原理循环编码是一种将数据序列转换为循环序列的编码方法。

在循环编码中,数据序列按照一定的规则进行排列,形成一个循环序列。

循环序列具有以下特点:1. 循环性:序列中的元素按照一定的顺序排列,形成一个循环;2. 压缩性:循环序列可以减少数据序列中的冗余信息,提高数据传输效率;3. 可逆性:循环编码具有可逆性,可以通过解码算法将循环序列还原为原始数据序列。

循环编码的基本原理如下:1. 对数据序列进行预处理,提取出数据序列中的关键信息;2. 将提取出的关键信息按照一定的规则进行排列,形成一个循环序列;3. 对循环序列进行编码,生成编码后的数据序列;4. 通过解码算法将编码后的数据序列还原为原始数据序列。

三、实验设备与软件1. 实验设备:计算机、编程软件(如C++、Python等);2. 实验软件:循环编码算法实现代码。

四、实验步骤1. 编写循环编码算法实现代码;2. 生成测试数据序列;3. 对测试数据序列进行循环编码;4. 计算编码后的数据序列的压缩比;5. 分析循环编码的性能;6. 编写实验报告。

五、实验结果与分析1. 编写循环编码算法实现代码以下是一个简单的循环编码算法实现代码示例(以Python为例):```pythondef encode(data):length = len(data)for i in range(length):for j in range(i+1, length):if data[i] > data[j]:data[i], data[j] = data[j], data[i]return datadef decode(encoded_data):return encoded_data[::-1]# 测试数据序列data = [5, 2, 9, 1, 5, 6]# 循环编码encoded_data = encode(data)# 解码decoded_data = decode(encoded_data)# 输出结果print("Original data:", data)print("Encoded data:", encoded_data)print("Decoded data:", decoded_data)```2. 计算编码后的数据序列的压缩比在本实验中,我们以数据序列的长度作为压缩比的参考指标。

基于MATLAB的循环码实验报告

基于MATLAB的循环码实验报告

循环码实验报告篇一:循环码实验报告湖南大学信息科学与工程学院实验报告实验名称课程名称香农编码信息论与编码1、实验目的(1)进一步熟悉循环编码、译码算法;(2)掌握C语言程序设计和调试过程中数值的进制转换、数值与字符串之间的转换等技术。

2、实验要求(1)输入:7位信息序列(2)输出:输出(11,7)循环码3、循环码编码算法一个码长为n的(n,k)循环码,它必为按模xn+1运算的一个余式。

Cn-1(x) =c0 xn-1+cn-1xn-2+…+c2 x+c1Ci (x) ≡xi ·C(x) mod (xn + 1)循环码完全由其码组长度n和生成多项式g(x)所决定生成多项式g(x)具有以下特性:(1) g(x)是一个常数项为1的 r=n-k 次多项式;(2)g(x)是x?1的一个因式;(3)该循环码中其它码多项式都是g(x)的倍式。

g(x),xg(x) …, xk-1g(x)如果g(x)是一个 n – k = r 次多项式,并且是xn+1的一个因式,则 g(x)生成一( n , k )循环码。

任何(n,k)循环码的全体码字都是由一个n-k=r次多项式生成。

n?gn?kgn?k?1...g1g0000...0??0gg?...gg00...0n?kn? k?110????G??00gn?kgn?k?1...g1g00...0??........?????000...0gn?kgn?k?1...g1g0??生成矩阵xn+1=g(x可见H矩阵可由下述的多项式矩阵的系数构成,即由h(x)的反多项式h*(x)循环移位得到r组互不相关的多项式系数矢量构成。

称H为循环码的一致监督矩阵定义一个矩阵是生成矩阵还是监督矩阵,主要是看它们在编码过程中所起的作用。

由于H矩阵与G矩阵彼此正交,所以两者的作用可以互换。

若g(x)生成一(n,k)循环码,那么h*(x)可生成(n,n-k)循环码,h(x)亦也作为生成多项式得到一(n,n-k)循环码。

循环码实验报告

循环码实验报告

循环码实验报告篇一:循环码实验报告湖南大学信息科学与工程学院实验报告实验名称课程名称香农编码信息论与编码1、实验目的(1)进一步熟悉循环编码、译码算法;(2)掌握C语言程序设计和调试过程中数值的进制转换、数值与字符串之间的转换等技术。

2、实验要求(1)输入:7位信息序列(2)输出:输出(11,7)循环码3、循环码编码算法一个码长为n的(n,k)循环码,它必为按模xn+1运算的一个余式。

Cn-1(x) =c0 xn-1+cn-1xn-2+…+c2 x+c1Ci (x) ≡xi ·C(x) mod (xn + 1)循环码完全由其码组长度n和生成多项式g(x)所决定生成多项式g(x)具有以下特性:(1) g(x)是一个常数项为1的 r=n-k 次多项式;(2)g(x)是x?1的一个因式;(3)该循环码中其它码多项式都是g(x)的倍式。

g(x),xg(x) …, xk-1g(x)如果g(x)是一个 n – k = r 次多项式,并且是xn+1的一个因式,则 g(x)生成一( n , k )循环码。

任何(n,k)循环码的全体码字都是由一个n-k=r次多项式生成。

n?gn?kgn?k?1...g1g0000...0??0gg?...gg00...0n?kn? k?110????G??00gn?kgn?k?1...g1g00...0??........?????000...0gn?kgn?k?1...g1g0??生成矩阵xn+1=g(x可见H矩阵可由下述的多项式矩阵的系数构成,即由h(x)的反多项式h*(x)循环移位得到r组互不相关的多项式系数矢量构成。

称H为循环码的一致监督矩阵定义一个矩阵是生成矩阵还是监督矩阵,主要是看它们在编码过程中所起的作用。

由于H矩阵与G矩阵彼此正交,所以两者的作用可以互换。

若g(x)生成一(n,k)循环码,那么h*(x)可生成(n,n-k)循环码,h(x)亦也作为生成多项式得到一(n,n-k)循环码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:信息论与编码课程设计题目:循环码的编码和译码程序设计指导教师:系别:专业:学号:姓名:合作者完成时间:成绩:评阅人:一、实验目的:1、通过实验了解循环码的工作原理。

2、深刻理解RS 码构造、RS 编译码等相关概念和算法。

二、实验原理1、RS 循环码编译码原理与特点设C 使某线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环移位),,,(1032)1(---=n n n c c c c C也属于C ,则称该码为循环码。

该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。

其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。

如果一个线性码具有以下的属性,则称为循环码:如果n 元组},,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的},,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。

RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。

码长:12-=mn信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1循环码特点有:1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。

2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。

3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。

对所有的i=0,1,2,……k -1,用生成多项式g(x)除n k ix-+,有:)()()(x b x g x a xi i ik n +=+- (2—7) 式中)(x b i 是余式,表示为:0,1,11,)(i i k n k n i i b x b x b x b ++=---- (2—8)因此,)(x b x i k n ++-是g(x)的倍式,即)(1x b x i k n ++-是码多项式,由此得到系统形式的生成矩阵为:(2—9)它是一个k ⨯n 阶的矩阵。

同样,由G ⨯T H =0可以得到系统形式的一致校验矩阵为:(2—10)已知(7,4)循环码的生成多项式和校验多项式分别为:1)(3++=x x x g ,1)(24+++=x x x x h 。

写得其生成矩阵和校验矩阵分别为:2、编码原理:有信息码构成信息多项式011)(m x m x m k k ++=-- ,其中最高幂次为k-1; 用kn x -乘以信息多项式m(x),得到的)(x m xkn -,最高幂次为n-1,该过程相当于把信息码(1-k m ,2-k m ,……,1m ,m )移位到了码字德前k 个信息位,其后是r 个全为零的监⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1101000011010000110100001101G ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101110001011100010111H ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=------------0,01,01,00,1,21,20,11,11,10000010001b b b b b b b b b G k n x k k k n k k k k n k ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=------------1000100010,00,20,11,01,21,11,01,21,1b b b b b b b b b Hk k k k k n k n k k n k督位;用g(x)除)(x m x k n -得到余式r(x),其次数必小于g(x)的次数,即小于(n-k ),将此r(x)加于信息位后做监督位,即将r(x)于)(x m x kn -相加,得到的多项式必为一码多项式。

1)有信息码构成信息多项式m(x)=m k-1x k-1+``````m 0 其中高幂次为k-1。

2)用x n-k 乘上信息多项式m(x),得最高幂次为n-1,做移位。

3)用g(x)除x n-k m(x)和到余式r(x)。

编码过程流程图:3、译码原理:1) 有接收到的y(x)计算伴了随式s(x)。

2) 根据伴随式s(x)找出对应的估值错误图样。

3) 计算c^(x)=y(x)+e^(x),得估计码字。

若c^(x)= c(x),则译码正确,否则错误。

由于g(x) 的次数为n - k 次,g(x) 除E(x) 后得余式(即伴随式)的最高次数为n-k-1次,故S(x) 共有2n-k 个可能的表达式,每一个表达式对应一个错误格式。

可以知道(7,4)循环码的S(x) 共有2(7-4) =否8个可能的表达式,可根据错误图样表来纠正(7,4)循环码中的一位错误。

解码过程流程图:4、纠错能力:由于循环码是一种线性分组码,所以其纠检错能力与线性分组码相当。

而线性分组码的最小距离可用来衡量码的抗干扰能力,那么一个码的最小距离就与它的纠检错能力有关。

定理: 对于任一个),(k n 线性分组码,若要在码字内 (1) 检测个错误,要求码的最小距离1+≥e d;初始化由R(x)确定S(x):错误!未找到引用源。

S(x)=0,无误码误由S(x)确定错误图样E(x) 纠错)()()(X R X E x c +=存储c(x)(2) 纠正个错误,要求码的最小距离12+≥t d ;(3) 纠正个错误同时检测个错误,则要求1++≥e t d ;循环码的译码分检错译码与纠错译码两类。

在无记忆信道上,对码字c ,差错图案e 和接收向量r 的多项式描述为)()()(x e x c x r +=定义)(x r 的伴随多项式为)(x s112210))((mod )()(--++++==r r xs x s x s s x g x r x s由于)),((mod 0)()()(x g x g x a x c ==所以))()(mod ()(x g x e x s =由此可见,0)(≠x s 则一定有差错产生,或说满足0))()(mod (≠x g x e 的差错图样)(x e 产生,它满足0))()(mod (=x g x e 。

循环码的检错译码即是计算)(x s 并判断是否为0三、实验分析1、实验测试结果,包括译码结果、误码率与信噪比之间的关系、生成多项式理想状态下,对信号随机的提取,编码器输入为1000001110001000,通过encode函数后,因为加入了监督码,信号变得复杂密集,编码输出为1011000101001110110001011000通过译码输出为1000001110001000,与编码输入一致。

说明循环码的检错和纠错能力性能好。

输出多项式为:g(x)=(x+a) (x+a2) (x+a3)=a6+a5x+a4x+a3x2+ a3x +a2x+x3以randint函数重新做一个输入信号并进行编码,结果与上例相似,输入与输出一致。

由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。

信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。

信噪比与误码率的关系比较,从图中可看出,当信噪比在20以内时,误码率相对比较大,最高达到0.45以上,而当SNR大于20后,信噪比保持很稳定。

下面是误码率的数字显示:2、实验过程遇到的问题及解决方法刚开始并没有注意到运用循环码时可用上简便的Matlab自带函数,一直苦恼怎么进行纠错编码及解码,然后查找资料,收集了与循环码相关的函数(部分如下:)1)encode函数功能:编码函数语法:code=encode(msg,N,K,method,opt)说明:用method指定的方法完成纠错编码。

其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。

2)decode函数功能:译码函数语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。

它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。

3)cyclpoly函数功能:生成循环码的生成多项式。

语法:p=cyclpoly(N,K);p=cyclpoly(N,K,fd_flag);说明:从p=cyclpoly(N,K)中可找到一个给定码长N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。

4)randint函数功能:引起一致地分布的任意整数矩阵语法:out = randint(m)out = randint(m,n)out = randint(m,n,rg)out = randint(m,n,rg,state)在进行误码率与信噪比之间的关系编程后,Matlab一直显示其后才发现原来没有对加噪后的信号进行整形输出,于是加入for循环以四舍五入对信号进行整形设定。

for i=1:100for a=1:k+1if noisycode(i,a)<0.5noisycode(i,a) = 0;elsenoisycode(i,a) = 1;endendend四、RS码在现代通信系统中的应用RS编码起源于1960年MIT Lincoln实验室,经历了数十年的发展,RS码成为了研究最详尽,分析最透彻,应用最广泛,研究成果最多的码类之一。

1、在井下通信中的应用:由于井下空间小,供电系统布置受到很大局限,电磁干扰现象也很严重,通过选择合适的信道编码方式是抗干扰措施之一,可有效消除干扰,而由于RSce纠正t个m位的二进制错误会符号,而不管这t\个错误会符号是连续出现的还是离散出现,因此RS很适用于存在突发错误信道中,如井下工作,对系统码率的降低和可靠性的提高起重要作用。

相关文档
最新文档