?? 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 + -