您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 基于matlab的伪随机序列生成及相关函数仿真实验
武夷学院实验报告课程名称:_扩频通信技术及应用_项目名称:基于matlab的伪随机序列生成及相关函数仿真实验姓名:翁开传__专业:__通信工程___班级:__2__学号:_40__同组成员_无___一、实验预习部分1:1.实验环境准备实验室的计算机和matlab软件和书本上的程序1注:1、实验预习部分包括实验环境准备和实验所需知识点准备。2、若是单人单组实验,同组成员填无。二、实验过程记录2:1.实验目的1)了解伪随机序列的相关知识。2)了解m序列的相关知识,了解其相关特性。3)熟悉MATLAB仿真的应用。4)掌握伪随机码的原理、软件产生,仿真分析其相关特性。2.实验步骤1)函数ms_generator(registers,connections)是m序列的生成函数,其中参数registers给出了移位寄存器的初始状态,connections给出了m序列的发生器。functionseq=ms_generator(registers,connections)registers=[00001];connections=[100101];n=length(connections);L=2^(n-1)-1;seq(1)=registers(n-1);fori=2:Lsum=0;form=1:(n-1)sum=mod(sum+registers(m)*connections(m+1),2);endfork=(n-1):-1:2registers(k)=registers(k-1);endregisters(1)=sum;seq(i)=registers(n-1);end运行输出的结果如下2注:实验过程记录要包含实验目的、实验原理、实验步骤,页码不够可自行添加。2)函数auto_corr()计算二进制序列seq的自相关函数,并画出函数曲线。在函数内调用了生成m序列的函数ms_generator(*)生成的m序列seq,然后在计算。functionseq=ms_generator(registers,connections)registers=[00001];connections=[100101];n=length(connections);L=2^(n-1)-1;seq(1)=registers(n-1);fori=2:Lsum=0;form=1:(n-1)sum=mod(sum+registers(m)*connections(m+1),2);endfork=(n-1):-1:2registers(k)=registers(k-1);endregisters(1)=sum;seq(i)=registers(n-1);endfunctionauto_correlation=auto_corr(seq)registers=[10000];%设置初始状态connections=[101001];%设置反馈逻辑seq=ms_generator(registers,connections);seq=-1*(seq*2-1);%负逻辑映射len=length(seq);temp=[seqseq];fori=0:len-1auto_correlation(i+1)=seq*(temp(i+1:i+len))';endauto_correlationplot(0:len-1,auto_correlation);运行的结果如下3)函数cross_corr()计算二进制序列seq1和seq2的互相关函数并画出曲线。在函数内调用ms_generator(*)函数分别生成等长的M序列seq1和seq2后在计算。程序也画出了自相关函数。functionseq=ms_generator(registers,connections)%registers=[00001];%connections=[100101];n=length(connections);L=2^(n-1)-1;seq(1)=registers(n-1);fori=2:Lsum=0;form=1:(n-1)sum=mod(sum+registers(m)*connections(m+1),2);endfork=(n-1):-1:2registers(k)=registers(k-1);endregisters(1)=sum;seq(i)=registers(n-1);endfunctionauto_correlation=auto_corr(seq)registers=[10000];%设置初始状态connections=[101001];%设置反馈逻辑seq=ms_generator(registers,connections);seq=-1*(seq*2-1);%负逻辑映射len=length(seq);temp=[seqseq];fori=0:len-1auto_correlation(i+1)=seq*(temp(i+1:i+len))';endauto_correlationplot(0:len-1,auto_correlation);functioncross_correlation=cross_corr(seq1,seq2)registers1=[00001];%设置初始状态connections1=[100101];%设置反馈逻辑seq1=ms_generator(registers1,connections1);seq1=-1*(seq1*2-1);%负逻辑映射registers2=[11111];%设置初始状态connections2=[111101];%设置反馈逻辑seq2=ms_generator(registers2,connections2);seq2=-1*(seq2*2-1);%负逻辑映射temp=[seq2seq2];len=length(seq2);fori=0:len-1cross_correlation(i+1)=seq1*(temp(i+1:i+len))';endauto_correlation=auto_corr(seq1);plot(0:len-1,auto_correlation,'-',0:len-1,cross_correlation);legend('自相关函数','互相关函数');xlabel('j');ylabel('相关函数');运行的结果如下4)函数gold()生成一族gold序列。程序中首先生成一对m序列优先对seq1和seq2,然后按照并结构生成了一族gold序列,最后画出一个gold序列的自相关函数以及族内一对gold序列的互相关函数functionseq=ms_generator(registers,connections)%registers=[00001];%connections=[100101];n=length(connections);L=2^(n-1)-1;seq(1)=registers(n-1);fori=2:Lsum=0;form=1:(n-1)sum=mod(sum+registers(m)*connections(m+1),2);endfork=(n-1):-1:2registers(k)=registers(k-1);endregisters(1)=sum;seq(i)=registers(n-1);endfunctionauto_correlation=auto_corr(seq)registers=[10000];%设置初始状态connections=[101001];%设置反馈逻辑seq=ms_generator(registers,connections);seq=-1*(seq*2-1);%负逻辑映射len=length(seq);temp=[seqseq];fori=0:len-1auto_correlation(i+1)=seq*(temp(i+1:i+len))';endauto_correlationplot(0:len-1,auto_correlation);functioncross_correlation=cross_corr(seq1,seq2)registers1=[00001];%设置初始状态connections1=[100101];%设置反馈逻辑seq1=ms_generator(registers1,connections1);seq1=-1*(seq1*2-1);%负逻辑映射registers2=[11111];%设置初始状态connections2=[111101];%设置反馈逻辑seq2=ms_generator(registers2,connections2);seq2=-1*(seq2*2-1);%负逻辑映射temp=[seq2seq2];len=length(seq2);fori=0:len-1cross_correlation(i+1)=seq1*(temp(i+1:i+len))';endauto_correlation=auto_corr(seq1);plot(0:len-1,auto_correlation,'-',0:len-1,cross_correlation);legend('自相关函数','互相关函数');xlabel('j');ylabel('相关函数');functiongold=gold()registers1=[100000];connections1=[1100001];seq1=ms_generator(registers1,connections1);registers2=[100000];connections2=[1110011];seq2=ms_generator(registers2,connections2);temp=[seq2seq2];len=length(seq2);fori=1:lengold(i,:)=mod(seq1+temp(i:i+len-1),2);endgold(len+1,:)=seq1;gold(len+2,:)=seq2;plot(0:len-1,auto_corr(gold(1,:)),'-',0:len-1,cross_corr(gold(1,:),gold(2,:)),'-.');legend('自相关函数','互相关函数');xlabel('j');ylabel('相关函数');运行的结果如下三、实验结果与讨论:3实验心得体会3注:1、实验小结应包含实验所需知识点和实验方法的总结,实验心得体会等。2、分组实验需包含同组讨论内容。通过此次实验我学到了如何使用matlab产生伪随机序列,深刻体会了产生伪随机序列的原理,此次实验较之前的小实验较为综合复杂,同时也是对之前所学内容的回顾与巩固,在编写程序时也发现了自己之前一些表达方式掌握不够,将在接下来的实验中进一步巩固实验报告成绩(百分制)__________实验指导教师签字:__________
本文标题:基于matlab的伪随机序列生成及相关函数仿真实验
链接地址:https://www.777doc.com/doc-2647889 .html