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

📄 gold31.m

📁 cmda仿真程序
💻 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 + -