基于matlab线性分组码实验设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 设计题目
线性分组码编译码实验
二、 实验目的:
1. 掌握线性分组码的编码原理、编码步骤和译码方法
2. 熟悉matlab 软件的基本操作,学会用matlab 软件进行线性分组码的编
码和译码 三、
实验主要内容及要求:
设计(15,11)或(255,247)线性分组码,利用随机生成的二进制序
列及BPSK 调制方式,比较使用信道编码与未使用信道编码的误比特率曲线
四、 实验设备及软件:
PC 机一台、Matlab 软件
五、 设计方案 ①
(15,11)线性分 ②
①
②
该实验系统框图如上图所示,其中信源编码在本实验不做讨论,编号①采用线性分组码编码和译码,编号②为不采用信道编译码,通过这两种方法的对比,得出误码率曲线。 1. 线性分组码编码
本实验采用的是(15,11)的线性分组码,线性分组码的编码由监督矩阵
信源编码 信道编码
BPSK 调制
信道传输
噪声
解调
信道译码
信源译码
统计误码率
和生成矩阵实现,监督矩阵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([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调制
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.BPSK解调