基于matlab线性分组码实验设计(共13页).doc

上传人:飞****2 文档编号:14237412 上传时间:2022-05-03 格式:DOC 页数:13 大小:81.50KB
返回 下载 相关 举报
基于matlab线性分组码实验设计(共13页).doc_第1页
第1页 / 共13页
基于matlab线性分组码实验设计(共13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《基于matlab线性分组码实验设计(共13页).doc》由会员分享,可在线阅读,更多相关《基于matlab线性分组码实验设计(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上重 庆 交 通 大 学信息论与编码综合设计实验报告班 级: 级 班 姓 名: 学 号: 实验项目名称: 线性分组码编译码实验 实验项目性质: 设计性实验 实验所属课程: 信息论与编码理论 实验室(中心): 网络实验中心 指 导 教 师 : 实验完成时间: 年 月 日专心-专注-专业教师评阅意见: 签名: 年 月 日实验成绩:一、 设计题目 线性分组码编译码实验二、 实验目的:1. 掌握线性分组码的编码原理、编码步骤和译码方法2. 熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码和译码三、 实验主要内容及要求:设计(15,11)或(255,24

2、7)线性分组码,利用随机生成的二进制序列及BPSK调制方式,比较使用信道编码与未使用信道编码的误比特率曲线四、 实验设备及软件:PC机一台、Matlab 软件噪声五、 设计方案信道传输BPSK调制信道编码 信源编码 (15,11)线性分 解调信源译码信道译码 统计误码率 该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号采用线性分组码编码和译码,编号为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。1. 线性分组码编码本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(411)的矩阵,由监督方程和(44)的单位矩阵构成,生成矩阵G

3、为(1115)的矩阵,由(1111)的单位矩阵和监督矩阵的转置矩阵构成。具体实现方法如下: 将要编码的序列先整形,整为11列 如果序列不能被11整除在后边补0使其能被11整除 将整形后的序列与生成矩阵G相乘即得到编码后的码字其实现代码如下:function n,C=xxbm(n)a=randint(1,n); %生成01随机序列 disp(编码序列:);disp(a);subplot(3,2,1);stairs(a);axis(1 length(a) -0.5 1.5)title(编码序列);%判断生成的随机序列个数是否是11的整数倍if length(a)/11=fix(length(a)/

4、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 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);else %随机序列个数不是11的整数倍,补0后编码 s1=a,zer

5、os(1,(fix(length(a)/11)+1)*11-length(a); %补0 b=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 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);endsu

6、bplot(3,2,2);stairs(C);axis(1 length(C) -0.5 1.5);title(编码后的码字);2. BPSK调制BPSK调制实现方法为:将0、1序列变为-1、1序列;将序列与载波相乘,为1时与载波相位相同,为-1时与载波相位相反。其实现代码如下:function fc,fs,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(

7、bits) modusignal=modusignal,bits(i)*carriar;endsubplot(3,2,3);plot(modusignal);title(BPSK调制后的波形);3. 信道加噪使用awgn函数对调制信号进行加噪,其实现代码如下:function cs=channel(modusignal,bits)cs=awgn(modusignal,1);subplot(3,2,4);plot(cs);title(相乘后信号频谱);title(加噪后的波形);4. BPSK解调产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号。然后通过低通滤波器滤波

8、器再抽样判决,得出解调后的原始信号。(要减去滤波器的延时时间t,t=(滤波器长度+1)/2)其实现代码如下:function k=designal(modusignal)designal=;t=linspace(0,2,16);carrier=cos(2*pi*t);for i=1:16:length(modusignal) designal=designal,modusignal(i:i+15).*carrier;endsubplot(3,2,5);plot(designal);title(解调后的波形);load lppassL=(length(lppass)+1)/2;y=filter(

9、lppass,1,designal);for i=1:length(y); if y(i)0 y(i)=-1; else y(i)=1; endendsubplot(3,2,6);plot(y);axis(L length(y)+L -1.5 1.5);title(抽样判决后的波形);%-%抽样判决for i=1:1:length(y)/16 k(i)=0; for j=1:16 k(i)=k(i)+y(i-1)*16+j); end k(i)=k(i)/16; if k(i)0 k(i)=0; else k(i)=1; endend5. 信道译码(线性分组码译码)译码原理:利用错误图样和伴随

10、式纠错。本实验所采用的为(15,11)线性分组码,最小汉明距离为3,所以具有纠错1位检错两位的功能。设一个接收码字矩阵为R,R*H=S (模2乘),则S为码字对应的伴随式矩阵如果S=0则说明接受码字无差错;如果S不为0,查看矩阵S中不为0的那行所在行数,该行即收码字错误所在行i;将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

11、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);Q=H; m=zeros(1,a);for i=1:a for j=1:b if S(i,:)=Q(j,:) %找出出错的位置 m(i)=j; %数组m记录出错的位置 end endendfor i=1:a %在错误的位置给出提示并纠错 switch(m(i) case 0 disp(没有出现错误!); G(i,:)=C(i,:)+E(1,:

12、); case 1 disp(注意:第1位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(2,:); case 2 disp(注意:第2位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(3,:); case 3 disp(注意:第3位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(4,:); case 4 disp(注意:第4位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(5,:); case 5 disp(注意:第5位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(6,:); case 6 disp(注意:第6位出现一个错误!已纠

13、错!); G(i,:)=C(i,:)+E(7,:); case 7 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(8,:); case 8 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(9,:); case 9 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(10,:); case 10 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(11,:); case 11 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(12,:)

14、; case 12 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(13,:); case 13 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(14,:); case 14 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(15,:); case 15 disp(注意:第7位出现一个错误!已纠错!); G(i,:)=C(i,:)+E(16,:); endendG=rem(G,2); %求出正确的编码disp(检错并纠错后的码组:);disp(G); %显示正确的编码j=1;while j=11

15、 %提取信息位 I(:,j)=G(:,j); j=j+1;endm1,n1=size(I);I=I;I=reshape(I,1,m1*n1);for i=1:n C1(i)=I(i);enddisp(译出的序列:);disp(C1); %显示原信息码六、 测试结果及说明:1. 信噪比为1时,结果如图:2. 信噪比为5时,结果如图:3. 信噪比为10时,结果如图:4. 译码时,当检测到误码时,结果如图:实验结果分析:由以上实验结果可知,该程序基本完成了线性分组码的编码、调制、加噪、解调、译码(包括检错纠错)等一系列操作。随着信噪比的降低解调信号错误率越高,由于(15,11)线性分组只能纠正一位错

16、误,对于大于等于2位的错误不能纠正,所以信噪比低低的情况下,会出现教的误码。需要采取纠错能力更强的信道编码方法进行编码。七、 实验体会:该实验是综合了matlab编程,信息论与编码的知识,实验中涉及到编码与译码、调制与解调、检错与纠错等内容,对初学者难度较大。对于实验中的难点,要经过仔细分析思考,反复实验,最终才可能取得理想的效果。该程序中编码采用生成矩阵才获得码字,所以具有一定的局限性,解调中用到的滤波器由自己设计,由于滤波器的参数对实验结果影响较大,所以滤波器的设计也是非常重要的。通过实验,让我明白一个道理,理论的学习远远不能满足实际需要,即使课本上的知识掌握了,那也只能通过考试而已,而通过实验设计,自己深入研究以后,才会真正掌握其中的原理,而且重点难点才能理解清楚,也不会轻易忘记。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁