基于matlab线性分组码实验设计.docx

上传人:b****8 文档编号:12725367 上传时间:2023-06-07 格式:DOCX 页数:17 大小:325.41KB
下载 相关 举报
基于matlab线性分组码实验设计.docx_第1页
第1页 / 共17页
基于matlab线性分组码实验设计.docx_第2页
第2页 / 共17页
基于matlab线性分组码实验设计.docx_第3页
第3页 / 共17页
基于matlab线性分组码实验设计.docx_第4页
第4页 / 共17页
基于matlab线性分组码实验设计.docx_第5页
第5页 / 共17页
基于matlab线性分组码实验设计.docx_第6页
第6页 / 共17页
基于matlab线性分组码实验设计.docx_第7页
第7页 / 共17页
基于matlab线性分组码实验设计.docx_第8页
第8页 / 共17页
基于matlab线性分组码实验设计.docx_第9页
第9页 / 共17页
基于matlab线性分组码实验设计.docx_第10页
第10页 / 共17页
基于matlab线性分组码实验设计.docx_第11页
第11页 / 共17页
基于matlab线性分组码实验设计.docx_第12页
第12页 / 共17页
基于matlab线性分组码实验设计.docx_第13页
第13页 / 共17页
基于matlab线性分组码实验设计.docx_第14页
第14页 / 共17页
基于matlab线性分组码实验设计.docx_第15页
第15页 / 共17页
基于matlab线性分组码实验设计.docx_第16页
第16页 / 共17页
基于matlab线性分组码实验设计.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于matlab线性分组码实验设计.docx

《基于matlab线性分组码实验设计.docx》由会员分享,可在线阅读,更多相关《基于matlab线性分组码实验设计.docx(17页珍藏版)》请在冰点文库上搜索。

基于matlab线性分组码实验设计.docx

基于matlab线性分组码实验设计

重庆交通大学

信息论与编码综合设计实验报告

班级:

级班

姓名:

学号:

实验项目名称:

线性分组码编译码实验

实验项目性质:

设计性实验

实验所属课程:

信息论与编码理论

实验室(中心):

网络实验中心

指导教师:

实验完成时间:

年月日

教师评阅意见:

签名:

年月曰

实验成绩:

一、设计题目

线性分组码编译码实验

二、实验目的:

1.掌握线性分组码的编码原理、编码步骤和译码方法

2.熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码和译码

三、实验主要内容及要求:

设计(15,11)或(255,247)线性分组码,利用随机生成的二进制序

列及BPSK调制方式,比较使用信道编码与未使用信道编码的误比特率曲线

四、实验设备及软件:

PC机一台、Matlab软件

该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号①采用线性分组码编码和译码,编号②为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。

1.线性分组码编码

本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(4X11)的矩阵,由监督方程和(4X4)的单位矩阵构成,生成矩阵G为(11X15)的矩阵,由(11X11)的单位矩阵和监督矩阵的转置矩阵构成。

具体实现方法如下:

1将要编码的序列先整形,整为11列

2如果序列不能被11整除在后边补0使其能被11整除

3将整形后的序列与生成矩阵G相乘即得到编码后的码字其实现代码如下:

function[n,C]=xxbm(n)

a=randint(1,n);%生成01随机序列

disp('编码序列:

');

disp(a);

subplot(3,2,1);

stairs(a);

axis([1length(a)-0.51.5])

title('编码序列');

%判断生成的随机序列个数是否是11的整数倍

if

length(a)/11==fix(length(a)/11)

%随机序列个数是11的整数倍,直接编码b=reshape(a,11,(length(a)/11));

M=b';

F=eye(11);

S=[0011;0101;0110;0111;1001;1010;1011;1

100;1101;1110;1111];

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,zeros(1,(fix(length(a)/11)+1)*11-length(a))];

%补0b=reshape(s1,11,(length(s1)/11));

M=b';

F=eye(11);

S=[0011;0101;0110;0111;1001;1010;1011;1100;1101;1110;1111];

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);

end

subplot(3,2,2);

stairs(C);

axis([1length(C)-0.51.5]);

title('编码后的码字');

2.BPSK调希9

BPSK调制实现方法为:

1将0、1序列变为-1、1序列;

2将序列与载波相乘,为‘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;

fori=1:

length(bits)modusignal=[modusignal,bits(i)*carriar];

end

subplot(3,2,3);plot(modusignal);

title('BPSK调制后的波形');

3.信道加噪

使用awgn函数对调制信号进行加噪,其实现代码如下:

functioncs=channel(modusignal,bits)

cs=awgn(modusignal,1);

subplot(3,2,4);plot(cs);

title('相乘后信号频谱');

title('加噪后的波形');

4.BPSKS调

产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号。

然后通过低通滤波器滤波器再抽样判决,得出解调后的原始信号。

(要减去滤波器的延时时间t,t=(滤波器长度+1)/2)

其实现代码如下:

functionk=designal(modusignal)

designal=[];

t=linspace(0,2,16);

carrier=cos(2*pi*t);

fori=1:

16:

length(modusignal)

designal=[designal,modusignal(i:

i+15).*carrier];

end

subplot(3,2,5);plot(designal);

title('解调后的波形');

loadlppass

L=(length(lppass)+1)/2;

y=filter(lppass,1,designal);

fori=1:

length(y);

ify(i)<0

y(i)=-1;

else

y(i)=1;

end

end

subplot(3,2,6);

plot(y);

axis([Llength(y)+L-1.51.5]);

title('抽样判决后的波形');

%

%抽样判决

fori=1:

1:

length(y)/16

k(i)=0;

forj=1:

16

k(i)=k(i)+y((i-1)*16+j);

end

k(i)=k(i)/16;

ifk(i)<0

k(i)=0;

else

k(i)=1;

end

end

5.信道译码(线性分组码译码)译码原理:

利用错误图样和伴随式纠错。

本实验所采用的为(15,11)线性分组码,最小汉明距离为3,所以具有纠错1位检错两位的功能。

设一个接收码字矩阵为R,R*H'=S(模2乘),则S为码字对应的伴随式矩阵如果S=0则说明接受码字无差错;

如果S不为0,查看矩阵S中不为0的那行所在行数,该行即收码字错误所在行i;

将S转置,将不为0的一列与H每一列进行比较,找到H中相同列,该列的列数即为错误所在列;

4由步骤得到错误具体位置,模2加对应的错误图样就可得到正确码字。

functionI=xxym(n,C)

[a,b]=size(C);

S=[0011;0101;0110;0111;1001;1010;1011;1100;1101;1110;1111];

K=eye(4);

H=[S',K];

A=[000000000000000];

B=eye(15);

E=[A;B];%生成错误图样

S=rem(C*H',2);

Q=H';m=zeros(1,a);fori=1:

a

在错误的位置给出提示并纠错

forj=1:

b

ifS(i,:

)==Q(j,:

)%m(i)=j;%

end

end

end

fori=1:

a%switch(m(i))

case0

找出出错的位置

数组m记录出错的位置

 

disp('没有出现错误!

');

G(i,:

)=C(i,:

)+E(1,:

);

case1

disp('注意:

第1位出现一个错误!

已纠错!

');

G(i,:

)=C(i,:

)+E(2,:

);

case2

disp('注意:

第G(i,:

)=C(i,:

)+E(3,:

);

case3

disp('注意:

第G(i,:

)=C(i,:

)+E(4,:

);

case4

disp('注意:

第G(i,:

)=C(i,:

)+E(5,:

);

case5

disp('注意:

第G(i,:

)=C(i,:

)+E(6,:

);

case6

disp('注意:

第G(i,:

)=C(i,:

)+E(7,:

);

case7

disp('注意:

第G(i,:

)=C(i,:

)+E(8,:

);

case8

disp('注意:

第G(i,:

)=C(i,:

)+E(9,:

);

case9

disp('注意:

第G(i,:

)=C(i,:

)+E(10,:

);

case10

disp('注意:

第G(i,:

)=C(i,:

)+E(11,:

);

case11

disp('注意:

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

位出现一个错误!

已纠错!

');

G(i,:

)=C(i,:

)+E(12,:

);

2

3

4

5

6

7

7

7

7

7

 

case12

disp('注意:

第7位出现一个错误!

已纠错!

');

G(i,:

)=C(i,:

)+E(13,:

);

case13

disp('注意:

第7位出现一个错误!

已纠错!

');

G(i,:

)=C(i,:

)+E(14,:

);

case14

disp('注意:

第7位出现一个错误!

已纠错!

');

G(i,:

)=C(i,:

)+E(15,:

);

case15

disp('注意:

第7位出现一个错误!

已纠错!

');G(i,:

)=C(i,:

)+E(16,:

);

end

end

 

disp('检错并纠错后的码组:

');

 

j=1;

whilej<=11%提取信息位

I(:

j)=G(:

j);

j=j+1;

end[m1,n1]=size(I);

I=I';

I=reshape(I,1,m1*n1);

fori=1:

n

C1(i)=I(i);

end

disp('译出的序列:

');

disp(C1);

显示原信息码

 

 

六、测试结果及说明:

1.信噪比为1时,结果如图:

 

编码序列

1.5■■

1

0.5-

0—

-0.5

246810

解调后的波形

编码后的码字

1.5■■

1■■

0.5,

0—II—

-0.5

51015

5

0

-5

0100200300

 

2.信噪比为5时,结果如图:

编码序列

编码后的码字

5

0

-5

加噪后的波形

解调后的波形

0100200300

1

0

-1

抽样判决后的波形

50100150200

 

 

 

3.信噪比为10时,结果如图:

 

4.译码时,当检测到误码时,结果如图:

0:

L00

1

1

0

]

0

01

I

1

>5£=[<11L]Q

]

1

Q

]

a

0I

J

1

]]

C=

□)1)Q

I

]

0

]

0

0I

J

1

i

I皿吓血口

空总:

裏4忆狀映r■能區!

己虬褚!

01100

1

1

0

]

0

01

1

1

1

oiiai

I

]

0

]

0

i-

□llqa

1

1

0

]

D

Q

实验结果分析:

由以上实验结果可知,该程序基本完成了线性分组码的编码、调制、加噪、解调、译码(包括检错纠错)等一系列操作。

随着信噪比的降低解调信号错误率越高,由于(15,11)线性分组只能纠正一位错误,对于大于等于2位的错误不能纠正,所以信噪比低低的情况下,会出现教的误码。

需要采取纠错能力更强的信道编码方法进行编码。

七、实验体会:

该实验是综合了matlab编程,信息论与编码的知识,实验中涉及到编码与译码、调制与解调、检错与纠错等内容,对初学者难度较大。

对于实验中的难点,要经过仔细分析思考,反复实验,最终才可能取得理想的效果。

该程序中编码采用生成矩阵才获得码字,所以具有一定的局限性,解调中用到的滤波器由自己设计,由于滤波器的参数对实验结果影响较大,所以滤波器的设计也是非常重要的。

通过实验,让我明白一个道理,理论的学习远远不能满足实际需要,即使课本上的知识掌握了,那也只能通过考试而已,而通过实验设计,自己深入研究以后,才会真正掌握其中的原理,而且重点难点才能理解清楚,也不会轻易忘记。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2