线性分组码实验报告
更新时间:2023-08-25 01:26:01 阅读量: 教育文库 文档下载
综合性设计性实验报告
专 业:
学 号:
姓 名:
实验所属课程:
实验室(中心): 信息技术软件实验室
指 导 教 师 :
2
一、 题目
线性分组码编译码实验 二、 仿真要求
1. 分别用不同的生成矩阵进行(7,4)线性分组码的编码,经调制解调后译码,并比较两种线性分组码的纠错能力。
2. 掌握线性分组码的编码原理、编码步骤和译码方法。
3. 熟悉matlab软件的基本操作,学会用matlab软件进行线性分组码的编码和译码。
三、仿真方案详细设计
编码:
本实验采用的是(7,4)线性分组码,线性分组码的编码由监督矩阵和生成矩阵实现,监督矩阵H为(3×4)的矩阵,由监督方程和(4×4)的单位矩阵构成,生成矩阵G为(4×7)的矩阵,由(4×4)的单位矩阵和监督矩阵的转置矩阵构成。实现过程为:
1、将要编码的序列先整形,整为4列
2、如果序列不能被4整除在后边补0使其能被4整除 3、将整形后的序列与生成矩阵G相乘即得到编码后的码字
在本实验中,分别生成两种生成矩阵,在产生了生成矩阵后根据输入的四位信息位和生成矩阵相乘即可得到编码矩阵。
译码:
在译码过程中,我们利用错误图样和伴随式来进行纠错。
1、设一个接收码字矩阵为R,R*H'=S (模2乘),则S为码字对应的伴随式矩阵如果S=0则说明接受码字无差错;
2、如果S不为0,查看矩阵S中不为0的那行所在行数,该行即收码字错误所在行i;
3、将S转置,将不为0的一列与H每一列进行比较,找到H中相同列,该列的列数即为错误所在列;
4、由步骤2和3得到错误具体位置,模2加对应的错误图样就可得到正确码字。 BPSK调制:
BPSK调制利用载波的相位变化来传递数字信息,振幅和频率保持不变。双极性的全占空矩形脉冲序列与正弦载波相乘就得到调制信号。因此进行调制时首先进行码形变换变为双极性的,再经乘法器与载波相乘得到调制信号。其具体实现方法如下:
1、将0、1序列变为-1、1序列;
2、将序列与载波相乘,为‘1’时与载波相位相同,为‘-1’时与载波相位相反。 BPSK解调:
解调是产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号,进而通过抽样判决得出原始信号。解调是调制的逆过程,其作用是从接受信号中恢复出原基带信号。解调的方法分为两类:相干解调和非相干解调(如包络检波)。相干解调也称同步检波,适用于所有线性调制信号的解调。其关键是必须在已调信号的接收端产生与信号载波同频同相的本地载波。 本次仿真实验采用的是相干解调法,调制信号与想干载波相乘,经过低通滤波器,再抽样判决得到原信号。通过产生一个与载波频率相同的本地载波,与经信道加噪后的调制信号相乘,得到解调信号,然后通过低通滤波器滤波器再抽样判决,得出解调后的原始信号。
四、仿真结果及结论
实验仿真图如下:
10
10误码率
-1
10
-2
10
-3
-15-14-13-12-11
-10信噪比
-9-8-7-6-5
通过上面仿真图我们可以看出,通过随机产生30000个数据,再经过重复统计误比特数100次,并取其平均值,得到了误码率曲线,最终生成两条线并可以进行直观的对比。在仿真过程中,在我发现,随机产生的数据量越大,两条曲线重合的就越紧密,这说明即使是在不同的生成矩阵中,用同一种编码和调制方式产生的误码率曲线都相差不大。
五、总结与体会
本次仿真实验是进行不同(7,4)线性分组码的纠错能力的比较,通过进行随机数据的产生、生成矩阵的产生以及信道编码译码等步骤,最终仿真得出实验结果。刚开始的时候对于线性分组码的编码还不太理解,通过查阅资料以及看老师的课件最终了解了这次编码实验的原理,也有了思路。之后就是进行matlab程序的编写和调试,在调试程序时也遇到了许多问题,比如编译码老是出错,最后通过查阅资料和和同学讨论才得到了解决。
通过这次仿真实验,我认真地学习了有关线性分组码的编码原理,并且通
过对实验的仿真对其有了更加深入的了解。这次实验不仅使我巩固了理论知识,也锻炼了自己对编码问题的解决能力。
六、主要仿真代码
主函数: clear all; clc; N=300; alter=100; datarate=1000; fc=datarate; fs=fc*16;
G1=eye(4,4); %产生4*4的单位矩阵 g2=[0,1,1;1,1,0;1,1,1;0,1,0]; G2=[1,0,1;1,1,1;1,1,0;0,1,1];
G=[G1,G2]; %设置生成矩阵为G g=[G1,g2];
H2=eye(3,3); %产生3*3的单位矩阵作为监督矩阵H和h的后三列 H=[G2',H2]; %监督矩阵H h=[g2',H2]; %监督矩阵h BER1=[]; %初始化误码率BER1,用来统计监督矩阵为H时的误码率 BER2=[];
for snr=-15:0.5:-5 %信噪比 err1=0; err2=0;
for i=1:alter
[ensignal_1,X1]=information(N,G)%编码后数据X1为编码后生成的码组 signal_1=ensignal_1*2-1; %变为双极性 [ensignal_2,X2]=information(N,g) signal_2=ensignal_2*2-1;
modusignal_1=modu(signal_1,datarate,fc, fs); %BPSK调制 modusignal_2=modu(signal_2,datarate,fc, fs);
y1=awgn(modusignal_1,snr,'measured'); %加噪 y2=awgn(modusignal_2,snr,'measured');
demosignal_1=bpskdemo(datarate,fc,fs,y1); %BPSK解调 demosignal_2=bpskdemo(datarate,fc,fs,y2);
[error1,signal_yima]=yima(demosignal_1,H); %译码 [error2,signal_yima]=yima(demosignal_2,h); s1=[]; s2=[];
[m,n]=size(X1);
for i=1:m %遍历每一行 s1=[s1,X1(i,:)]; s2=[s2,X2(i,:)]; end
err1=err1+sum(abs(error1-s1)) %error1为H下纠错后得到数据 err2=err2+sum(abs(error2-s2)) end
BER1=[BER1,err1/(alter*N/4*7)] %误码率计算 BER2=[BER2,err2/(alter*N/4*7)] end figure(1)
semilogy(-15:0.5:-5,BER1,'r'); hold on
semilogy(-15:0.5:-5,BER2,'g'); xlabel('信噪比');ylabel('误码率'); grid on
功能函数:
function [signal,X]=information(N,G)
m=randint(1,N); x=reshape(m,length(m)/4,4); %分组编码
X=mod(x*G,2); %进行编码 n=length(m)/4*7;
signal=reshape(X,1,n); %把编码后的码字信息转变为一维数组
function modusignal=modu(signal, dataRate,fc, fs) %采用BPSK调制方式
t=linspace(0,1,fs/fc);
carrier=sin(2*pi*fc*t);
modusignal=[];
for i=1:length(signal)
modusignal=[modusignal,carrier*signal(i)]; end end
function demosignal=bpskdemo(datarate,fc,fs,signal) %BPSK解调 t=linspace(0,1,fs/fc); c=sin(2*pi*fc*t); l=length(signal)/length(c); for i=1:l
signal((i-1)*length(c)+1:i*length(c))=signal((i-1)*length(c)+1:i*length(c)).*c; end s=signal;
load lowpass1 %载入低通滤波器 s=[s,zeros(1,fix(length(lowpass1)/2))]; spa=filter(lowpass1,1,s);
lpfs=spa(fix(length(lowpass1)/2)+1:end); demosignal=[];
for i=0:length(c):length(lpfs)-length(c) if (lpfs(i+length(c)/2)>0) demosignal=[demosignal,1]; else
demosignal=[demosignal,0];
end end
function [error,signal_yima]=yima(demosignal,H) signal_yima=reshape(demosignal,length(demosignal)/7,7) error=[]; for j=1:length(demosignal)/7
E=[1,1,1,1,1,1,1]; %初始化错误图样 R=signal_yima([j],:)
S=mod(R*(H'),2); %S为伴随矩阵 for i=1:7 %用for循环取出H中每一列,然后与S相加 T=H(:,[i]); B=mod(S+T',2); if all(B(:)==0) E(1,i)=1; else E(1,i)=0; end; end;
E %得到错误图样 if E==0
err=R; %纠错后得到七个数据
err=mod(R+E,2) end
error=[error,err]; %最终得到纠错后的数据 end
正在阅读:
线性分组码实验报告08-25
中国共产党预备党员考察表内容04-18
第八单元《我锻炼 我健康 - 平均数》青岛版数学四年级下册教案教学设计 - 图文11-16
二十年后再相会作文550(2)03-12
2011关工总结01-18
3.我成长的故事12-23
2019年版中国光电转换模块市场现状调研与发展趋势分析报告目录03-21
郝斌数据结构(链表程序代码)05-09
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 分组码
- 线性
- 实验
- 报告
- 学校档案管理工作总结
- 部编版小学二年级上册17 难忘的泼水节公开课教案优质课教学设计实录
- KV配电线路运行规程
- 天津历年高考题-化学-04-13
- 酒店绩效考核与薪酬设计
- 2018-2024年中国围巾手套二件套制造市场全景调查与投资可行性报告(目录)
- 1.2信用工具与外汇(修改)
- 论中国传统文化继承和发展
- 新东方SAT写作讲义
- 新目标九年级英语固定搭配总结
- 复数的几何意义教案
- 小学数学典型应用题类型分析和解题思路
- 我国历年房地产宏观调控政策回顾
- 婴儿体格生长标准表
- 环境艺术设计专业大学生职业生涯规划书
- 海洋知识竞赛题库-网络下载——参考1
- 大同小学生食堂管理领导小组及工作职责
- 煤矿调度室培训学习计划
- 人性的弱点读后感
- 1建(构)筑物消防员职业技能鉴定考试习题册