用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
本函数用于产生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序列。


版权声明:本文为weixin_43031528原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。