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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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解调

相关文档
最新文档