版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、综合性设计性实验报告专 业 班 级: 姓名 (学号): 实 验 名 称: 通信系统仿真 实验室(中心): 软件与通信实验中心 指 导 教 师 : 实验完成时间: 2011 年 12 月 15 日序号项目标准评分1系统演示(功能)(30%)按要求完成系统功能且界面友好容错能力强(2730)按要求完成系统功能界面一般有较好的容错能力(2426)基本完成系统功能有一定的容错能力(2123)基本完成系统功能(1820分)未完成系统功能或他人代做或抄袭(15)2课程设计说明书(30%)课程设计书各项目认真填写,具有清晰的设计思路及软件测试结果分析(2730)课程设计书各项目认真填写,具有较为清晰的设计思
2、路并对软件测试结果进行了较为清晰的分析(2426)课程设计书各项目认真填写,设计思路正确(2123)课程设计书进行为较为认真的填写(1821)课程设计书有未完成项或各项填写不属实或他人代做或抄袭(15)3口头答辩(对知识点掌握程度、应变及口头表达等)(20%)能熟练回答老师所提问题,口头表达流利,应变能力强(1820)能较为熟练地回答老师所提问题,口头表达流利,应变能力强(1617)能回答老师所提问题,口头表达较流利(1415)在经提示后能回答老师提出的问题,课程内容掌握不太熟练(1213)经提问发现课程设计是他人代做或抄袭的(10)4纪律遵守、群体协作等(20%)20教师签字总分一、设计题目
3、通信系统仿真对比不编码,汉明码,循环码,卷积码的误码率曲线二、设计要求1.学会matlab的基本使用2.学会模块化设计思想3.了解通信系统具体流程4.理解汉明码编码,译码及其如何纠正错误5.理解循环码编码,译码及其如何纠正错误6.理解循环码编码,译码及其如何纠正错误7.学会BPSK调制与解调7.学会对比分析噪声与误码率曲线三、实验相关基本理论1本实验整个系统模型如下:2.关于信道使用的编码部分 a.(n,k)汉明码.它是一种线性分组码,纠错能力为1,监督元个数 nk=m;H 阵中每列有 m个元素,至多可构成 2m1种互不相同的非0列,码长: n=2m1,信息位数:k=2mm1,监督位数:nk=
4、m,码的最小距离:dmin=3(t=1)编码:(n,k) 线性码的编码就是根据线性码的监督矩阵或生成矩阵将长为 k 的信息组变换成长为 n(n>k) 的码字。C=m·G;译码:先得到监督矩阵H,E=H·R,若E=0则与判断与监督矩阵的哪一列相同,则将R对应位取反,最后得出k位码字。b.循环码它也是一种线性分组码,如果 (n,k) 线性分组码的任意码矢C=(Cn1,Cn2,C0) 的 i 次循环移位,所得矢量C(i)=(Cn1i,Cn2i,C0,Cn1,Cni)仍是一个码矢,则称此线性码为 (n,k) 循环码。编码:设信息向量 m=(mk1,mk2,m0)信息多项式 m
5、(x)=mk1xk1+mk2 xk2+m0 码多项式的高次幂部分等于m(x),即 C(x)=cn1xn1+ cnkxnk+ cnk1xnk1 +c1x +c0 =xnk m(x)+q(x) q(x)的次数<nkC(x)= xnkm(x)+ (xnkm(x) mod g(x)译码:先得到监督矩阵H,E=H·R,若E=0则与判断与监督矩阵的哪一列相同,则将R对应位取反,最后得出k位码字。C.卷积码卷积码与分组码的不同之处:在任意给定单元时刻,编码器输出的 n 个码元中,每一个码元不仅和此时刻输入的 k 个信息元有关,还与前连续 m 个时刻输入的信息元有关。在同样的编码效率 R 下,
6、卷积码的性能优于分组码,至少不低于分组码。(n,k,m) 码完全由 (n·k) 个生成序列所生成,每个生成序列中含有 (N =m+1)个元素。码序列 C=C0(1)C0(2)C0(n)C1(1)C1(2)C1(n)Cl(1)Cl(2) Cl(n) 任一子码可以由待编码的信息序列M=m0(1)m0(2) m0(k)m1(1) m1(2) m1(k) ml(1) ml(2)ml(k)按如下卷积关系求出编码:信息序列 M=m0(1)m1(1);ml(1)表示第 l 个时刻的第 k=1个信息元g(1,1)=g0(1,1) g1(1,1) g2(1,1) g3(1,1)=1011 g(1,2)
7、=g0(1,2) g1(1,2) g2(1,2) g3(1,2)=1111译码:卷积码的译码可分为代数译码和概率译码。代数译码:从码的代数结构出发,以一个约束度的接收序列为单位,对该接收序列的信息码组进行译码。大数逻辑译码是代数译码的主要方法。概率译码:从信道的统计特性出发,以远大于约束度的接收序列为单位,对信息码组进行最大似然的判决。维特比译码和序列译码是其最主要的方法在维特比译码中,用篱笆图来描述码的译码更为方便3.BPSK调制与解调调制即乘以一个载波,解调即再乘以这个载波,滤去高频(2fc)部分,既可恢复出原信号。四、各模块(函数)详细设计1.信号源产生%产生随机信源,N个0,1func
8、tion signal=genration( N)signal=rand(1,N)>0.5;end2.信道编码与解码部分(1)(255,247)汉明码a.给出生成矩阵function hanming=creatM()%生成(255,247)的汉明码的生成矩阵,返回到hanming中%先生成8*255监督矩阵Hnum=1;H=;ey=eye(8,8);for i=2:255 str=dec2bin(i,8); for j=1:8 num8(j)=str2num(str(j); end for k=1:7 x =num8; y= ey(k,:) ; % if sum(num8=ey(k,:)
9、=0 ww= (sum(x=y); if ww=0 break; end if k=7 znum8=num8' H=H znum8; end endend %将监督矩阵转化成生成矩阵hanming(255,247) G=H'; ey=eye(247,247); hanming=ey G;endb编码function codesignal=xcode(signal)%信道编码,如果不足247位则后面的不编码Ls=length(signal);mo=mod(Ls,247);%Ls=length(signal);codesignal=;hanming=creatM() ;%调用生成矩
10、阵函数for i=1:fix(Ls/247); temp=signal(1,(i-1)*247+1:i*247); codesignal=codesignal temp*hanming;endif mo>0 last=signal(1,fix(Ls/247)*247+1:Ls); %未编码部分 codesignal=codesignal last;endcodesignal=mod(codesignal,2); %对结果进行模2运算,即转化成0,1endc.译码function decodesign=xdecode(outsignal)%译码,将outsignal中的码子译为codesi
11、gn中hanming=creatM() ; %得到汉明码的生成矩阵%将生成矩阵转化成监督矩阵H%H=hanming(:,248:255)'ey=eye(8,8);H=H ey;Ls=length(outsignal); %译码的码字长度%Ls=length(outsignal); %需要译码的码字长度decodesign=; %定义译码后的码子存放矩阵for i=1:fix(Ls/255) x=(i-1)*255+1:i*255; R=outsignal(1,x); %取出255个码子,并且转化成255*1的矩阵 RT=R' S=mod(H*RT,2); if sum(S)=0
12、 for j=1:255 if sum(S=H(:,j)=0 R(j)=R(j); break; end end end decodesign=decodesign R(1,1:247); endmo=mod(Ls,255); %判断输出的码子是否是255的倍数,如果不是则最后几位未编码if mo>0 % outsignal=outsignal zeros(1,255-mo); last=outsignal(1,fix(Ls/255)*255+1:Ls); decodesign=decodesign last;endend(2)(15,11)系统循环码a编码function Cout=s
13、yscode15(M,N,Cin,g)%循环编码 (系统码) 输入参数(15,11)即(m,n)的循环编码,g为生成码多项式,Cin为输入码子,%Cout为编码后的输出码子,如果输入码字的长度不是N的整数倍,则后面的不编码%生成(M,N)的循环码生成矩阵码字Cout,g为生成多项式,如果Cin不是N的倍数,则最后几位不编码Ls=length(Cin); %计算出输入码子的长度Cout=; %初始化码子输出for i=1:fix(Ls/N) %将Cin分成Ls/N个N位码 in=Cin(1,(i-1)*N+1:i*N); %取出每一组需要编码的电平 yin=in zeros(1,M-N); %在
14、需要编码的电平往高位移动M-N位,即在后面添0 divi=yin(1:M-N+1); %divi为每一步的除数 for j=M-N+1:M %模拟做除法的过程,共循环N次 if divi(1)=0 %如果除数的高位为0则去掉,同时将in相应为补在后面 if j=M %判断是否余数已经出来,若未出来再补,否则继续补 for k=2:M-N+1 %移位 divi(k-1)=divi(k); end divi(k)=yin(j+1); %将in的下一位补上 end continue; else divi=divi+g; %模2运算 divi=mod(divi,2); if j=M %判断是否余数已经
15、出来,若未出来再补,否则继续补 for k=2:M-N+1 %移位 divi(k-1)=divi(k); end divi(k)=yin(j+1); %将in的下一位补上 end end end r=divi(2:M-N+1); %余式,即监督位 out=in r; %系统循环码字 Cout=Cout out; %编出的码字endif mod(Ls,N)=0 %如若不是整数倍,后面的不编码 Cout=Cout Cin(1,N*fix(Ls/N)+1:Ls);endendb生成监督矩阵function G=creatG15(M,N,g)%生成(15,11)的生成矩阵GG=; %存储生成矩阵%首先
16、生成(15,11)的生成矩阵ey=eye(N);for i=1:N G=G;syscode15(M,N,ey(i,:),g);endendc译码function decodesign=decode15(M,N,outsignal,g)%译码,Cout为需要译码的码子,g为码多项式,decod为译码后的码子G=creatG15(M,N,g) ; %得到生成矩阵%将生成矩阵转化成监督矩阵H Q=G(:,N+1:M)' H=Q eye(M-N);Ls=length(outsignal); %需要译码的码字长度decodesign=; %定义译码后的码子存放矩阵for i=1:fix(Ls/M
17、) x=(i-1)*M+1:i*M; R=outsignal(1,x); %取出M个码子,并且转化成M*1的矩阵 RT=R' S=mod(H*RT,2); if sum(S)=0 for j=1:M if sum(S=H(:,j)=0 R(j)=R(j); break; end end end decodesign=decodesign R(1,1:N); endmo=mod(Ls,M); %判断输出的码子是否是M的倍数,如果不是则最后几位未编码if mo>0 % outsignal=outsignal zeros(1,M-mo); last=outsignal(1,fix(Ls
18、/M)*M+1:Ls); decodesign=decodesign last;endend(3).卷积码(2,1,2)a编码function cout=convcode(cin)%本函数实现(2,1,2)卷积编码,输入为cin%编码后输出为cout%其中生成多项式g11=g(1,1)=1 1 1,g11=1 1 1; %定义生成多项式g12=1 0 1;cout=; %定义输出矩阵regist=zeros(1,length(g11); %初始化寄存器为0,长度与生成多项式矩阵长度一样for i=1:length(cin) %控制循环编码 for j=length(regist):-1:2 %
19、寄存器循环移位 regist(j)=regist(j-1); end regist(1)=cin(i); %将需要编码的码子一位一位的移至寄存器 c1=sum(regist.*g11); %输出码字c1 c2=sum(regist.*g12); %输出码字c2 cout=cout c1 c2; %将码字保存至输出码字中endcout=mod(cout,2) ; %求模2运算end b译码function desiganl=convdecode(signal)%本函数实现(2,1,2)卷积译码,需要译码的信号signal%译码后输出为designal%其中生成多项式g11=g(1,1)=1 1
20、1,%g12=g(1,2)=1 0 1;%signal=0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1; Ls=fix(length(signal)/2); %求出原来需要解码的长度,恢复原信号% signal=signal zeros(1,6*2); % 为了让解码路径归并到一条上%初始化每一个的前2个状态(因为前2个不需要比较,判断)%state表示经过的路径,code表示译出得相应码子,diff表示与接收到码字的不同个数s(1).state=0 0 0 0;s(1).code=0 0;s(2).state=0 0 1 1;s(2).code=0 1;s(3
21、).state=1 1 1 0;s(3).code=1 0;s(4).state=1 1 0 1;s(4).code=1 1;for i=1:4 s(i).diff=sum(signal(1:4)=s(i).state);endfor i=3:fix(length(signal)/2) %对3以后的状态处理 %以下是对s(1)的处理,后面的类似 temp1=s(1).state 0 0; %2个变量分别存放到这个状态的2条路径 temp2=s(3).state 1 1; diff1=sum(signal(1:i*2)=temp1); %分别就算这2条路径接收到的码字的不同个数 diff2=su
22、m(signal(1:i*2)=temp2); if diff1<diff2 %判断哪条路径最短,并处理,存放至diff临时变量 fs(1).state=temp1; %为了不影响后面s2,s3,s4的处理 fs(1).code=s(1).code 0; fs(1).diff=diff1; else fs(1).state=temp2; fs(1).code=s(3).code 0; fs(1).diff=diff2; % fs(1).diff=diff2; end %以下是对s(2)的处理,同s(1) temp1=s(1).state 1 1; %2个变量分别存放到这个状态的2条路径
23、temp2=s(3).state 0 0; diff1=sum(signal(1:i*2)=temp1); %分别就算这2条路径接收到的码字的不同个数 diff2=sum(signal(1:i*2)=temp2); if diff1<diff2 %判断哪条路径最短,并处理,存放至diff临时变量 fs(2).state=temp1; %为了不影响后面s2,s3,s4的处理 fs(2).code=s(1).code 1; fs(2).diff=diff1; else fs(2).state=temp2; fs(2).code=s(3).code 1; fs(2).diff=diff2; e
24、nd %以下是对s(3)的处理,同s(1) temp1=s(2).state 1 0; %2个变量分别存放到这个状态的2条路径 temp2=s(4).state 0 1; diff1=sum(signal(1:i*2)=temp1); %分别就算这2条路径接收到的码字的不同个数 diff2=sum(signal(1:i*2)=temp2); if diff1<diff2 %判断哪条路径最短,并处理,存放至diff临时变量 fs(3).state=temp1; %为了不影响后面s2,s3,s4的处理 fs(3).code=s(2).code 0; fs(3).diff=diff1; els
25、e fs(3).state=temp2; fs(3).code=s(4).code 0; fs(3).diff=diff2; end %以下是对s(4)的处理,同s(1) temp1=s(2).state 0 1; %2个变量分别存放到这个状态的2条路径 temp2=s(4).state 1 0; diff1=sum(signal(1:i*2)=temp1); %分别就算这2条路径接收到的码字的不同个数 diff2=sum(signal(1:i*2)=temp2); if diff1<diff2 %判断哪条路径最短,并处理,存放至diff临时变量 fs(4).state=temp1; %
26、为了不影响后面s2,s3,s4的处理 fs(4).code=s(2).code 1; fs(4).diff=diff1; else fs(4).state=temp2; fs(4).code=s(4).code 1; fs(4).diff=diff2; end s=fs;enddiff=s(1).diff s(2).diff s(3).diff s(4).diff; %存储4条路径的状态与码字不同个数Min=min(diff); %找到最小值i=find(Min=diff); %找到最小值的下标na=s(min(i).code; %译出码字,若有2条以上的选择i较小的desiganl=na(1
27、:Ls); %因为后面补了0,现在去掉end3.调制与解调(1)调制%BPSK调制,signal代表信号,modsignal调制后的信号,datarate:数据传输比特率,%fc:载波频率 fs:抽样频率function modsignal=BPSK(signal,datarate,fc,fs)signal=signal*2-1; t=linspace(0,1/datarate,fs/datarate);carrier=cos(2*pi*fc*t); modsignal=; for i=1:length(signal) modsignal=modsignal,signal(i)*carrier; endend(2)解调%deBPSK解调并译码,signal代表输入信号,designal解调后的信号,译码后deout为输出码字,datarate:数据传输比特率,%fc:载波频率 fs:抽样频率function deout=deBPSK(signal,datarate,fc,fs)t=linspace(0,1/datarate,fs/datarate);carrier=cos(2*pi*fc*t);Lc=length(carrier);Ls=length(signal);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年天津工艺美术职业学院单招职业技能测试题库含答案详解(培优b卷)
- 2026年安徽城市管理职业学院单招职业倾向性考试题库含答案详解(能力提升)
- 2026年天津城市建设管理职业技术学院单招职业适应性考试题库含答案详解(巩固)
- 2026年四川西南航空职业学院单招职业倾向性测试题库附答案详解(突破训练)
- 2026年天津渤海职业技术学院单招职业倾向性测试题库带答案详解(b卷)
- 2026年大连装备制造职业技术学院单招职业适应性考试题库及答案详解一套
- 2026年安徽国防科技职业学院单招职业技能测试题库附答案详解(巩固)
- 2026年宁波大学科学技术学院单招职业适应性考试题库附参考答案详解(综合卷)
- 2026年宁夏葡萄酒与防沙治沙职业技术学院单招职业倾向性考试题库附参考答案详解(综合卷)
- 2026年宁波财经学院单招职业适应性考试题库含答案详解(b卷)
- 空气能热泵系统安装施工方案
- 水利工程危大工程安全监理实施细则
- 抚育林施工方案(3篇)
- 【初中 物理】二力平衡课件-2025-2026学年人教版物理八年级下册
- 【华信咨询】中国智算中心(AIDC)产业发展白皮书(2024年)
- 2026年及未来5年市场数据中国吡咯喹啉醌PQQ行业发展潜力分析及投资战略数据分析研究报告
- 重建祠堂施工方案(3篇)
- 酒店餐厅外包协议书
- 2026年湖南城建职业技术学院单招职业技能测试模拟测试卷附答案
- 燃气管道安装质量控制管理措施
- 2025年公安专业科目考试真题及答案
评论
0/150
提交评论