基于matlab线性分组码实验设计文档格式.docx

上传人:b****5 文档编号:19789754 上传时间:2023-01-10 格式:DOCX 页数:12 大小:90.61KB
下载 相关 举报
基于matlab线性分组码实验设计文档格式.docx_第1页
第1页 / 共12页
基于matlab线性分组码实验设计文档格式.docx_第2页
第2页 / 共12页
基于matlab线性分组码实验设计文档格式.docx_第3页
第3页 / 共12页
基于matlab线性分组码实验设计文档格式.docx_第4页
第4页 / 共12页
基于matlab线性分组码实验设计文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于matlab线性分组码实验设计文档格式.docx

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

基于matlab线性分组码实验设计文档格式.docx

设计(15,11)或(255,247)线性分组码,利用随机生成的二进制序列及BPSK调制方式,比较使用信道编码与未使用信道编码的误比特率曲线

四、实验设备及软件:

PC机一台、Matlab软件

五、

设计方案

(15,11)线性分

该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号

采用线性分组码编码和译码,编号

为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。

1.线性分组码编码

本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(4×

11)的矩阵,由监督方程和(4×

4)的单位矩阵构成,生成矩阵G为(11×

15)的矩阵,由(11×

11)的单位矩阵和监督矩阵的转置矩阵构成。

具体实现方法如下:

将要编码的序列先整形,整为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([1length(a)-0.51.5])

title('

编码序列'

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

iflength(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;

1100;

1101;

1110;

1111];

K=eye(4);

G=[F,S];

H=[S'

K];

C=rem(M*G,2);

disp('

生成矩阵G:

disp(G);

监督矩阵H:

disp(H);

码字:

disp(C);

else%随机序列个数不是11的整数倍,补0后编码

s1=[a,zeros(1,(fix(length(a)/11)+1)*11-length(a))];

%补0

b=reshape(s1,11,(length(s1)/11));

%监督矩阵

C=rem(M*G,2);

end

subplot(3,2,2);

stairs(C);

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

编码后的码字'

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;

fori=1:

length(bits)

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

subplot(3,2,3);

plot(modusignal);

BPSK调制后的波形'

3.信道加噪

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

functioncs=channel(modusignal,bits)

cs=awgn(modusignal,1);

subplot(3,2,4);

plot(cs);

相乘后信号频谱'

加噪后的波形'

4.BPSK解调

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

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

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

functionk=designal(modusignal)

designal=[];

carrier=cos(2*pi*t);

16:

length(modusignal)

designal=[designal,modusignal(i:

i+15).*carrier];

subplot(3,2,5);

plot(designal);

解调后的波形'

loadlppass

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

y=filter(lppass,1,designal);

length(y);

ify(i)<

y(i)=-1;

else

y(i)=1;

end

subplot(3,2,6);

plot(y);

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

抽样判决后的波形'

%-----------------------------------

%抽样判决

1:

length(y)/16

k(i)=0;

forj=1:

16

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

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

ifk(i)<

k(i)=1;

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

译码原理:

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

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

设一个接收码字矩阵为R,R*H'

=S(模2乘),则S为码字对应的伴随式矩阵如果S=0则说明接受码字无差错;

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

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

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

functionI=xxym(n,C)

[a,b]=size(C);

S=[0011;

K=eye(4);

H=[S'

A=[000000000000000];

B=eye(15);

E=[A;

B];

%生成错误图样

S=rem(C*H'

2);

Q=H'

m=zeros(1,a);

a

b

ifS(i,:

)==Q(j,:

)%找出出错的位置

m(i)=j;

%数组m记录出错的位置

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

switch(m(i))

case0

没有出现错误!

G(i,:

)=C(i,:

)+E(1,:

case1

注意:

第1位出现一个错误!

已纠错!

)+E(2,:

case2

第2位出现一个错误!

)+E(3,:

case3

第3位出现一个错误!

)+E(4,:

case4

第4位出现一个错误!

)+E(5,:

case5

第5位出现一个错误!

)+E(6,:

case6

第6位出现一个错误!

)+E(7,:

case7

第7位出现一个错误!

)+E(8,:

case8

)+E(9,:

case9

)+E(10,:

case10

)+E(11,:

case11

)+E(12,:

case12

)+E(13,:

case13

)+E(14,:

case14

)+E(15,:

case15

)+E(16,:

G=rem(G,2);

%求出正确的编码

检错并纠错后的码组:

disp(G);

%显示正确的编码

j=1;

whilej<

=11%提取信息位

I(:

j)=G(:

j);

j=j+1;

[m1,n1]=size(I);

I=I'

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

n

C1(i)=I(i);

译出的序列:

disp(C1);

%显示原信息码

六、测试结果及说明:

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

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

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

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

实验结果分析:

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

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

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

七、实验体会:

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

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

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

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

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

当前位置:首页 > 高中教育 > 高中教育

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

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