📄 gold31.m
字号:
function [codes]=Goldlow(L,Numcodes)
n=log2(L+1);
if n==4
f=[1 0 0 1;1 1 0 0];
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];
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];
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];
%else
%display('error!L is an invalid number');
%break;
end
fsize=size(f);
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));
end
pairs=(nrow-1)*nrow/2;
Sumcodes=pairs*L+nrow;
%if Numcodes>Sumcodes
% display('eroor!the needed number of codes if too large,propose to increase L!');
% break;
%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
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';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -