⽤MATLAB产⽣m序列+互相关、⾃相关特性分析
题⽬
考虑周期N=63的两个pn序列,⼀个序列的反馈抽头为[6,1],另⼀个序列的反馈抽头为[6,5,2,1]。
(a) 计算这两个序列的互相关函数和⾃相关函数
(b) ⽐较(a)中所得的互相关函数和序列[6,5,2,1]与镜像序列[6,5,4,1]之间的互相关函数。
主体代码
clc,clear;
N=63;%周期为63
%产⽣反馈抽头,从左到右依次表⽰寄存器1,2,3,4,5,6
p1=[1,0,0,0,0,1];%反馈抽头1
p2=[1,1,0,0,1,1];%反馈抽头2
p3=[1,0,0,1,1,1];%反馈抽头3
%⽣成m序列
pn1=mseq(p1);
pn2=mseq(p2);
pn3=mseq(p3);
%⽤+1、-1代表1、0
y1=2*pn1-1;
y2=2*pn2-1;
y3=2*pn3-1;
%求互相⼲函数
xcorr1=pncorr(y1,y2,N);
xcorr2=pncorr(y2,y3,N);
corr1=pncorr(y1,y1,N);
corr2=pncorr(y2,y2,N);
%画图
subplot(2,2,1);
plot(-62:62,corr1(1:125));
axis([-62,62,-10,80]);
xlabel('t');ylabel('R(t)');title('反馈抽头为[6,1]的⾃相关函数');
subplot(2,2,2);
plot(-62:62,corr2(1:125));
axis([-62,62,-10,80]);
xlabel('t');ylabel('R(t)');title('反馈抽头为[6,5,2,1]的⾃相关函数');
subplot(2,2,3);
plot(-62:62,xcorr1(1:125));
axis([-62,62,-20,20]);
xlabel('t');ylabel('R(t)');title('反馈抽头为[6,1]与[6,5,2,1]间互相关函数');
subplot(2,2,4);
plot(-62:62,xcorr2(1:125));
axis([-62,62,-20,20]);
xlabel('t');ylabel('R(t)');title('反馈抽头为[6,5,2,1]与[6,5,4,1]间互相关函数');
函数mseq用subplot函数
本函数⽤于产⽣m序列。输⼊参数为反馈抽头序列,输出量为⽣成的m序列。
function y=mseq(coef)
m=length(coef);%确定寄存器数⽬
N=2^m-1;%确定周期
mback=0;%⽤于存放反馈值
y=zeros(1,N);%⽤于存放输出序列
registers=[zeros(1,m-1) 1];%确定寄存器初始值
for i=1:N
y(i)=registers(m);
mback=mod(sum(coef.*registers),2);
registers=[mback registers(1:end-1)];
end
函数pncorr
本函数⽤于求m序列的相关函数。输⼊参数为:参与运算的两个序列及两个序列的长度N。若输⼊的两个序列相同,则结果为该序列的⾃相关函数值序列;若输⼊的两个序列不同,则结果为两个序列的互相关函数值序列。
function y=pncorr(u,v,N)
for i=0:N
u1=[u(i+1:N) u(1:i)];%表⽰u序列左移
temp1(N+1-i)=sum(u1.*v);
u2=[u(N-i+1:N) u(1:N-i)];%表⽰u序列右移
temp2(i+1)=sum(u2.*v);
end
y=[temp1(2:N) temp2(1:N)];
结果
如图所⽰,m序列拥有较好的⾃相关函数特性和相对较差的互相关函数特性。
反馈抽头为[6,1]与[6,5,2,1]的序列的互相关函数仅有3种取值,且幅度⼩于等于17,满⾜Gold理论,可以⽤于构造gold序列。