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

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

重庆交通大学

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

班级:_________________ 级 ______ 班姓名:_____________________________ 学号:_____________________________ 实验项目名称:线性分组码编译码实验

实验项目性质: _______ 设计性实验_________ 实验所属课程:信息论与编码理论

实验室(中心):___ 网络实验中心________ 指导教师: _________________________________ 实验完成时间: __________ 年 _____ 月 _____ 日

一、设计题目

线性分组码编译码实验

二、实验目的:

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

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

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

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

四、实验设备及软件:

PC机一台、Matlab软件

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

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

1.线性分组码编码

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

具体实现方法如下:

①将要编码的序列先整形,整为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)/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,zeros(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);

end

subplot(3,2,2);

stairs(C);

axis([1 length(C) -0.5 1.5]);

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

2.BPSK调希9

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(bits) modusignal=[modusignal,bits(i)*carriar];

end

subplot(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.BPSKS 调

产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号。然后通过低通滤波器滤波器再抽样判决,得出解调后的原始信号。 (要减去滤波器的延时时间t ,t= (滤波器长度+1) /2 )

其实现代码如下:

相关主题
相关文档
最新文档