?? goldlow.m
字號:
%Gold序列產生器
%L=15,31,63,127
function [codes]=GoldLow(L,Numcodes)
n=log2(L+1);
if n==4
f=[1,0,0,1;1,1,0,0];%2*4%生成多項式系數
elseif n==5
f=[1,0,0,1,0;1,1,1,1,0;1,1,0,1,1;1,0,1,0,0;1,0,1,1,1;1,1,1,0,1];%6*5
elseif n==6
f=[1,0,0,0,0,1;1,1,0,0,1,1;1,0,1,1,0,1;...
1,1,0,0,0,0;1,1,1,0,0,1;1,1,0,1,1,0;];%6*6
elseif n==7
f=[1,1,0,0,1,0,1;1,1,1,0,1,1,1;1,0,0,0,0,0,1;1,0,1,0,0,1,1;...
1,1,1,0,0,1,0;1,1,1,1,0,1,1;1,1,0,0,0,0,0;1,1,0,1,0,0,1];%8*7
else
display('error!L is an invalid number');
return;
end
fsize=size(f);%size(a)是求對應a的維數
nrow=fsize(1);
m=ones(nrow,L+n-1);
for i=1:L-1
mf=m(:,i:i+n-1);
m(:,i+n)=diag(rem(mf*f',2));%rem中元素都除以2的余數,最后取矩陣的對角線元素
end
pairs=(nrow-1)*nrow/2;
Sumcodes=pairs*L+nrow;
if Numcodes>Sumcodes
display('error!The needed number of codes is too large.Propose to increase L');
return
end
c=zeros(Numcodes,L);
Sum=0;
for ii=1:nrow-1
for jj=ii+1:nrow
for j=1:L
Sum=Sum+1;
c(Sum,:)=m(ii,1:L)+periodshift(m(jj,1:L),0,j-1);
if Sum==Numcodes
c=rem(c,2);
codes=2*c(1:Numcodes,:)-1;
break
end
if Sum==Numcodes break;end
end
if Sum==Numcodes break;end
end
if Sum<Numcodes
c(Sumcodes-nrow+1:Sumcodes,:)=m(:,1:L);
c=rem(c,2);
codes=2*c(1:Numcodes,:)-1;
end
codes=codes'
%CDMA擴頻碼生成器
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -