📄 ogold_sequence_generator.m
字号:
p=6;%p表示m序列的阶次
N=2.^p;
Y_axis=N+4;
X_axis=N*N;
mseq1 = (lsj_mseq(p)+1)/2;%产生31位的第一组m序列,该1,-1为01序列;
mseq1(N)=0; %第一组m序列的末尾添加一个0
mseq2 =(lsj_mseq2(p)+1)/2;%通过镜像对称方法,产生长度为31的第二组m序列
%%%镜像对称是将函数lsj_mseq中的生成多项式参数coef = [0,1,0,0,1]改为 coef = [0,0,1,0,1];
for i=0:(N-2)
a= circshift(mseq2,i);%通过循环移位,产生第二个m序列的新序列;
a(N)=0;%在新序列的末尾加0
b=xor(mseq1,a);
c=2.*b-1;
OGOLD(i+1,:)=c;
end
OGOLD(N,:)=2.*mseq1-1;
%%%下面的程序用于验证OGOLD序列的正交性
temp=0;
for i=1:N
for j=1:N
temp=temp+(sum(OGOLD(i,:).*OGOLD(j,:)))/N;
end
end
%a1=[-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,1]; %32位SR互补序列
%a1=[1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1];
%a1=[1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1];
%a1=[1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1];
d=[1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,1,-1,-1,-1,1,1,1,-1,1];
for i=129:193
d(i)=d(i-128);
end
for i=194:256
d(i)=-1*d(i-128);
end
for i=257:385
d(i)=d(i-256);
end
for i=386:512
d(i)=-1*d(i-256);
end
for i=1:N
a1(i)=d(i);
end
A=[1 1;1 -1];
for i=1:(p-1)
A=[A A;A -A]; %产生32位walsh码,-1,-1,-1,1,1,1,-1,1,
end
for i=1:N
OGOLAY(i,:)=a1.*A(i,:);
end
temp2=0;
for i=1:N
for j=1:N
temp2=temp2+(sum(OGOLAY(i,:).*OGOLAY(j,:)))/N;
end
end
OGLOLAY_all_sequence=[];
OGOLD_all_sequence=[];
WALSH_all_sequence=[];
for i=1:N
e=dec2bin((i-1),6);
f(i)=bin2dec(strcat(e(6),e(5),e(4),e(3),e(2),e(1)))+1;
OGOLAY_FFT(i)=max(abs(fft(OGOLAY(i,:),N)));
WALSH_FFT(i)=max(abs(fft(A(f(i),:),N)));
OGOLD_FFT(i)=max(abs(fft(OGOLD(f(i),:),N)));
%下面是将不同码的FFT幅度串起来,便于观测
OGLOLAY_all_sequence=[OGLOLAY_all_sequence, OGOLAY_FFT];
OGOLD_all_sequence=[OGOLD_all_sequence,OGOLD_FFT];
WALSH_all_sequence=[WALSH_all_sequence,WALSH_FFT];
OGOLAY_SET_PAPR(i)=20*log10(OGOLAY_FFT(i)/(sqrt(0.5*N)));
WALSH_SET_PAPR(i)=20*log10(WALSH_FFT(i)/(sqrt(0.5*N)));
OGOLD_SET_PAPR(i)=20*log10(OGOLD_FFT(i)/(sqrt(0.5*N)));
end
max_WALSH_SET_PAPR=max(WALSH_SET_PAPR);
max_OGOLD_SET_PAPR=max(OGOLD_SET_PAPR);
max_OGOLAY_SET_PAPR=max(OGOLAY_SET_PAPR);
figure;
plot(WALSH_SET_PAPR);
hold on;
plot(OGOLD_SET_PAPR);
hold on;
plot(OGOLAY_SET_PAPR);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -