Matlab生成M序列并求相关函数(部分转载)
要求
按照[6,1]和[6,5,2,1]的反馈抽头形式生成N=63的M序列,并求自相关函数和互相关函数。
说明
M序列的生成是https://blog.csdn.net/cjbct/article/details/78153616/的代码,互相关函数是自己简单写的。
其实Matlab里有互相关函数xcorr和自相关函数autocorr,大概记一下它们的作用和区别。
- xcorr算互相关不用说,但也能算自相关。是信号间隔的函数,间隔有正负间隔,所以长n的信号有2n-1个自相关函数值
- autocorr算自相关和xcorr算自相关不同在于,由于自相关是偶函数所以长n的信号只有n个对应的自相关函数值,且它是归一化的
但是这里不能直接用这两个函数,因为M序列是周期序列,做相关移位时相邻周期的数又补上了,所以需要小小修改一下。
几个需要注意的点:
- 做相关前必须要对序列极性编码,变成±1那种
- 相关函数按照书上定义加了系数,相当于归一化了
- 最后画图时要注意调整一下x轴,因为数组是从1开始的,而x轴应该从-(n-1)开始
pol1=[1 0 0 0 0 1];%[6,1]
pol2=[1 1 0 0 1 1];%[6,5,2,1]
pol3=[1 1 1 0 0 1];%[6,5,4,1]
%produce m sequence
N=63;
mseq1=mseq(pol1);
mseq2=mseq(pol2);
mseq3=mseq(pol3);
%polarization
u=2*mseq1-1;
v=2*mseq2-1;
w=2*mseq3-1;
%Calculate auto/corss correlation function
%xcorr function cannot be used as PN seq is a periodic seq
[corr1]=correlation(u,u,N);
[corr2]=correlation(v,v,N);
[corr3]=correlation(u,v,N);
[corr4]=correlation(v,w,N);
%plot
figure(1);
plot(-62:62,corr1(1:125));axis([-62,62,-1,2]);
xlabel(\'\tau\');
ylabel(\'R_{c}(\tau)\');
title(\'Autocorrelation function [6,1]\');
figure(2);
plot(-62:62,corr2(1:125));axis([-62,62,-1,2]);
xlabel(\'\tau\');
ylabel(\'R_{c}(\tau)\');
title(\'Autocorrelation function [6,5,2,1]\');
figure(3);
plot(-62:62,corr3(1:125));axis([-62,62,-1,1]);
xlabel(\'\tau\');
ylabel(\'R_{c}(\tau)\');
title(\'Crosscorrelation function [6,1] [6,5,2,1]\');
figure(4);
plot(-62:62,corr4(1:125));axis([-62,62,-1,1]);
xlabel(\'\tau\');
ylabel(\'R_{c}(\tau)\');
title(\'Crosscorrelation function [6,5,2,1] [6,5,4,1]\');
function [seq]=mseq(coef)
%seq:out coef:in
m=length(coef);
len=2^m-1;
backQ=0;
seq=zeros(1,len);
registers=[1 zeros(1,m-2) 1];
for i=1:len
seq(i)=registers(m);
backQ=mod(sum(coef.*registers),2);
registers(2:length(registers))=registers(1:length(registers)-1);
registers(1)=backQ;
end
end
function [cor]=correlation(u,v,N)
%cor=zeros(1,2*N-1);
for i=0:N
v1=[v(N-i+1:N) v(1:N-i)];
temp1(i+1)=sum(u.*v1);
v2=[v(i+1:N) v(1:i)];
temp2(i+1)=sum(u.*v2);
end
cor=[temp2(2:N) temp1(1:N)].*(1/N); %multiply (1/N) according to the definition on the textbook