基于matlab线性分组码实验设计_第1页
基于matlab线性分组码实验设计_第2页
基于matlab线性分组码实验设计_第3页
基于matlab线性分组码实验设计_第4页
基于matlab线性分组码实验设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 设计题目线性分组码编译码实验二、 实验目的:1. 掌握线性分组码的编码原理、编码步骤和译码方法2. 熟悉 matlab 软件的基本操作,学会用 matlab 软件进行线性分组码的编 码和译码三、实验主要内容及要求:设计(15,11)或(255,247)线性分组码,利用随机生成的二进制序列及 bpsk 调制方式,比较使用信道编码与未使用信道编码的误比特率曲线 四、 实验设备及软件:pc 机一台、matlab 软件五、 设计方案噪声信源编码信道编码 (15,11)线性分bpsk 调制信道传输统计误码率信源译码信道译码解调该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号 采用线性分

2、组码编码和译码,编号为不采用信道编译码,通过这两种方法 的对比,得出误码率曲线。1. 线性分组码编码本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵 h 为(411)的矩阵,由监督方程和(44) 的单位矩阵构成,生成矩阵 g 为(1115)的矩阵,由(1111)的单 位矩阵和监督矩阵的转置矩阵构成。具体实现方法如下:1 将要编码的序列先整形,整为 11 列2 如果序列不能被 11 整除在后边补 0 使其能被 11 整除3 将整形后的序列与生成矩阵 g 相乘即得到编码后的码字其实现代码如下:function n,c=xxbm(n)a=randint(1

3、,n); %生成 01 随机序列disp(编码序列:);disp(a);subplot(3,2,1);stairs(a);axis(1 length(a) -0.5 1.5)title(编码序列);%判断生成的随机序列个数是否是 11 的整数倍iflength(a)/11=fix(length(a)/11)%随机序列个数是 11 的整数倍,直接编码 b=reshape(a,11,(length(a)/11);m=b;f=eye(11);s=0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1

4、0;1 1 1 1;k=eye(4);g =f,s;h =s,k;c=rem(m*g,2);disp(生成矩阵 g:);disp(g);disp(监督矩阵 h:);disp(h);disp(码字:);dddd (c);eeee%随机序列个数不是 11 的整数倍,补 0 后编码s1=a,zeros(1,(fix(length(a)/11)+1)*11-length(a);%补 0b=reshape(s1,11,(length(s1)/11);m=b;f=eye(11);s=0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 1;1 0 1 0;1 0 1 1;1 1 0

5、0;1 1 0 1;1 1 1 0;1 1 1 1;k=eye(4);g =f,s;h =s,k; % 监督矩阵c=rem(m*g,2) ;disp(生成矩阵 g:);disp(g);disp(监督矩阵 h:);disp(h);disp(码字:);disp(c);endsubplot(3,2,2);stairs(c);axis(1 length(c) -0.5 1.5);title(编码后的码字);2. bpsk 调制bpsk 调制实现方法为:1 将 0、1 序列变为-1、1 序列;2 将序列与载波相乘,为1时与载波相位相同,为-1时与载波相 位相反。其实现代码如下:function fc,f

6、s,datarate,modusignal=bpskmodu(bits,datarate)fc=datarate*2;fs=fc*8;modusignal=;t=linspace(0,2,16);carriar=cos(2*pi*t);bits=bits*2-1;for i=1:length(bits)modusignal=modusignal,bits(i)*carriar;endsubplot(3,2,3);plot(modusignal);title(bpsk 调制后的波形);3. 信道加噪使用 awgn 函数对调制信号进行加噪,其实现代码如下:function cs=channel(m

7、odusignal,bits)cs=awgn(modusignal,1);subplot(3,2,4);plot(cs);title(相乘后信号频谱);title(加噪后的波形);4. bpsk 解调产生一个与载波频率相同的本地载波,与经信道加噪后的调制 信号相乘,得到解调信号。然后通过低通滤波器滤波器再抽样 判决,得出解调后的原始信号。(要减去滤波器的延时时间 t, t=(滤波器长度+1)/2)其实现代码如下:function k=designal(modusignal)designal=;t=linspace(0,2,16);carrier=cos(2*pi*t);for i=1:16:l

8、ength(modusignal)designal=designal,modusignal(i:i+15).*carrier;endsubplot(3,2,5);plot(designal);title(解调后的波形);load lppassl=(length(lppass)+1)/2;y=filter(lppass,1,designal);for i=1:length(y);if y(i)0y(i)=-1;elsey(i)=1;endendsubplot(3,2,6);plot(y);axis(l length(y)+l -1.5 1.5);title(抽样判决后的波形);%-%抽样判决fo

9、r i=1:1:length(y)/16k(i)=0;for j=1:16k(i)=k(i)+y(i-1)*16+j);endk(i)=k(i)/16;if k(i)0k(i)=0;elsek(i)=1;endend5. 信道译码(线性分组码译码)译码原理:利用错误图样和伴随式纠错。本实验所采用的为(15,11)线 性分组码,最小汉明距离为 3,所以具有纠错 1 位检错两位的功能。 设一个接收码字矩阵为 r,r*h=s (模 2 乘),则 s 为码字对应的伴 随式矩阵如果 s=0 则说明接受码字无差错;如果 s 不为 0,查看矩阵 s 中不为 0 的那行所在行数,该行即收码字 错误所在行 i;

10、将 s 转置,将不为 0 的一列与 h 每一列进行比较,找到 h 中相同列, 该列的列数即为错误所在列;由步骤得到错误具体位置,模 2 加对应的错误图样就可得到正确 码字。其实现代码如下:function i=xxym(n,c)a,b=size(c);s=0 0 1 1;0 1 0 1;0 1 1 0;0 1 1 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;k=eye(4);h=s,k;a =0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;b =eye(15);e=a;b; %生成错误图样s=rem(c*h,2

11、);q=h;m=zeros(1,a);for i=1:afor j=1:bif s(i,:)=q(j,:) %找出出错的位置m(i)=j; %数组 m 记录出错的位置endendendfor i=1:a %在错误的位置给出提示并纠错 switch(m(i)cccc 0cccc (没有出现错误!); g(i,:)=c(i,:)+e(1,:);cccc 1cccc (注意:第 1 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(2,:);cccc 2cccc (注意:第 2 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(3,:);cccc 3cccc (注意:第 3

12、位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(4,:);case 4disp(注意:第 4 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(5,:);cccc 5cccc (注意:第 5 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(6,:);cccc 6cccc (注意:第 6 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(7,:);cccc 7cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(8,:);cccc 8cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,

13、:)+e(9,:);cccc 9cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(10,:);cccc 10cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(11,:);cccc 11cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(12,:);cccc 12cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(13,:);cccc 13cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(14,:);cccc 1

14、4cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(15,:);cccc 15cccc (注意:第 7 位出现一个错误!已纠错!); g(i,:)=c(i,:)+e(16,:);endendg=rem(g,2); %求出正确的编码disp(检错并纠错后的码组:);disp(g); %显示正确的编码j=1;while j=11 %提取信息位 i(:,j)=g(:,j);j=j+1;endm1,n1=size(i);i=i;i=reshape(i,1,m1*n1);for i=1:nc1(i)=i(i);enddisp(译出的序列:);disp(c1); %显

15、示原信息码六、 测试结果及说明:1. 信噪比为 1 时,结果如图:1.510.50-0.510-110-1编 码 序 列2 4 6 8 10 bpsk 调 制 后 的 波 形0 100 200 300 解 调 后 的 波 形0 100 200 3001.510.50-0.550-510-1编 码 后 的 码 字5 10 15 加 噪 后 的 波 形0 100 200 300 抽 样 判 决 后 的 波 形50 100 150 2002. 信噪比为 5 时,结果如图:编 码 序 列编 码 后 的 码 字1.510.50-0.510-110-12 4 6 8 10 bpsk 调 制 后 的 波 形

16、0 100 200 300 解 调 后 的 波 形0 100 200 3001.510.50-0.550-510-15 10 15 加 噪 后 的 波 形0 100 200 300 抽 样 判 决 后 的 波 形50 100 150 2003. 信噪比为 10 时,结果如图:1.510.50-0.510编 码 序 列2 4 6 8 10 bpsk 调 制 后 的 波 形1.510.50-0.520编 码 后 的 码 字5 10 15 加 噪 后 的 波 形-1-20 100 200 300 0 100 200 300解 调 后 的 波 形抽 样 判 决 后 的 波 形1010-1-10 100 200 30050 100 150 2004. 译码时,当检测到误码时,结果如图:实验结果分析:由以上实验结果可知,该程序基本完成了线性分组码的编码、调制、加 噪、解调、译码(包括检错纠错)等一系列操作。随着信噪比的降低解调信号错 误率越高,由于(15,11)线性分组只能纠正一位错误,对于大于等于 2 位的错 误不能纠正,所以信噪比低低的情况下,会出现教的误码。需要采取纠错能力更强的信道编码方法进行编码。七、 实验体会:该实验是综合了 matlab 编程,信息论

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论