📄 baker.m
字号:
function [m,s]=Baker(P,Z)
%利用Baker变换产生PN码
aver=[];
N=1024;
e1=0.0009;
e2=0.0011;
L=length(P);
leng=1;
m=0;
s=0;
PN=[];
while leng<L
n=1;
pn=[]; %初始为空矩阵
while n<=N
j=leng;
x=Z(j)/P(j);
if x>0.5
pn=[pn,1];
else
pn=[pn,0];
end
n=n+1;
Z(j)=mod(2*Z(j),P(j));
end
pn=2*pn-1;
for i=1:N
acorr(i)=pn*[pn(1+i:N),pn(1:i)]'/N;
end
acorr=acorr(1:N-1);
aver1=acorr*acorr'/(N-1);
if aver1<=e1
m=m+1;
PN(m,:)=pn;
end
leng=leng+1;
end
PN1=[];
[row,col]=size(PN);
i=1;
while i<=row
j=1;
while j<=row
if j==i
j=j+1;
end
if j>row
break;
end
pn1=PN(i,:);
pn2=PN(j,:);
for k=1:N
ccorr(k)=pn1*[pn2(1+k:N),pn2(1:k)]'/N;
end
aver2=ccorr*ccorr'/N;
if aver2>e2
break;
end
if j==row
s=s+1;
PN1(s,:)=pn1;
end
j=j+1;
end
i=i+1;
end
save PN1;
pn1=PN1(1,:);
pn2=PN1(2,:);
for i=1:N
acorr(i)=pn1*[pn1(1+i:N),pn1(1:i)]'/N;
end
acorr=acorr(1:N-1);
aver1=acorr*acorr'/(N-1)
for i=1:N
ccorr(i)=pn1*[pn2(1+i:N),pn2(1:i)]'/N;
end
aver2=ccorr*ccorr'/N
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -