基于某matlab地伪随机序列生成及相关函数仿真实验.docx
《基于某matlab地伪随机序列生成及相关函数仿真实验.docx》由会员分享,可在线阅读,更多相关《基于某matlab地伪随机序列生成及相关函数仿真实验.docx(10页珍藏版)》请在冰点文库上搜索。
基于某matlab地伪随机序列生成及相关函数仿真实验
武夷学院实验报告
课程名称:
_扩频通信技术及应用_项目名称:
基于matlab的伪随机序列生成及相关函数仿真实验
姓名:
翁开传__专业:
__通信工程___班级:
__2__学号:
_40__同组成员_无___
一、实验预习部分:
1.实验环境准备
实验室的计算机和matlab软件和书本上的程序
二、实验过程记录:
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:
L
sum=0;
form=1:
(n-1)
sum=mod(sum+registers(m)*connections(m+1),2);
end
fork=(n-1):
-1:
2
registers(k)=registers(k-1);
end
registers
(1)=sum;
seq(i)=registers(n-1);
end
运行输出的结果如下
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:
L
sum=0;
form=1:
(n-1)
sum=mod(sum+registers(m)*connections(m+1),2);
end
fork=(n-1):
-1:
2
registers(k)=registers(k-1);
end
registers
(1)=sum;
seq(i)=registers(n-1);
end
functionauto_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-1
auto_correlation(i+1)=seq*(temp(i+1:
i+len))';
end
auto_correlation
plot(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:
L
sum=0;
form=1:
(n-1)
sum=mod(sum+registers(m)*connections(m+1),2);
end
fork=(n-1):
-1:
2
registers(k)=registers(k-1);
end
registers
(1)=sum;
seq(i)=registers(n-1);
end
functionauto_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-1
auto_correlation(i+1)=seq*(temp(i+1:
i+len))';
end
auto_correlation
plot(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-1
cross_correlation(i+1)=seq1*(temp(i+1:
i+len))';
end
auto_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:
L
sum=0;
form=1:
(n-1)
sum=mod(sum+registers(m)*connections(m+1),2);
end
fork=(n-1):
-1:
2
registers(k)=registers(k-1);
end
registers
(1)=sum;
seq(i)=registers(n-1);
end
functionauto_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-1
auto_correlation(i+1)=seq*(temp(i+1:
i+len))';
end
auto_correlation
plot(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-1
cross_correlation(i+1)=seq1*(temp(i+1:
i+len))';
end
auto_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:
len
gold(i,:
)=mod(seq1+temp(i:
i+len-1),2);
end
gold(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('相关函数');
运行的结果如下
三、实验结果与讨论:
实验心得体会
通过此次实验我学到了如何使用matlab产生伪随机序列,深刻体会了产
生伪随机序列的原理,此次实验较之前的小实验较为综合复杂,同时也
是对之前所学内容的回顾与巩固,在编写程序时也发现了自己之前一些
表达方式掌握不够,将在接下来的实验中进一步巩固
实验报告成绩(百分制)__________实验指导教师签字:
__________