基于matlab线性分组码实验设计
![基于matlab线性分组码实验设计](https://img.360docs.net/img43/17trmoz0gkybp2u5fhdogzmy4r2chwi0-31.webp)
![基于matlab线性分组码实验设计](https://img.360docs.net/img43/17trmoz0gkybp2u5fhdogzmy4r2chwi0-02.webp)
重庆交通大学
信息论与编码综合设计实验报告
班级:_________________ 级 ______ 班姓名:_____________________________ 学号:_____________________________ 实验项目名称:线性分组码编译码实验
实验项目性质: _______ 设计性实验_________ 实验所属课程:信息论与编码理论
实验室(中心):___ 网络实验中心________ 指导教师: _________________________________ 实验完成时间: __________ 年 _____ 月 _____ 日
一、设计题目
线性分组码编译码实验
二、实验目的:
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 )
其实现代码如下: