⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ogold_sequence_generator.m

📁 OGOLD序列是无线通信中的常用扩频序列
💻 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 + -