sinterleaver.m

来自「turbo 码matlab编译码程序」· M 代码 · 共 87 行

M
87
字号
function I=Sinterleaver(N)
%generate S-random interleavers
S=floor(sqrt(N/2));

u=rand(1,N);
[x,I]=sort(u);

for i=1:N
    variagroup(i)=0;
end

for T=1:4
         
         
           for i = 2: N
	        
            
                 
                
                 if i<=S
                    
                      for j=1:i-1
                      
                              while abs(I(i)-I(j))<S
                               
                                varia=I(i);
                                for k=i+1:N                          
                                     I(k-1)=I(k);
                                end
                   
                                 I(N)=varia;
                             end
                       end
                     
            
                else
                  
                   j=i-S;
                   while j<i
                       flag=0;
                       while abs(I(i)-I(j))<S
                         
                               varia=I(i);
                                 for k=i+1:N
                                      I(k-1)=I(k);
                                 end
                               I(N)=varia;
                               flag=flag+1;
                               if  flag==N-i+1
                                     
                                     j=i;
                                     
                                     break;
                               end     
                       end
                       j=j+1;
                   end
                   
                   
                   if  flag==N-i+1
                             
                              for  k=i:N
                                   
                                     variagroup(k-i+1)= I(k);   
                              end
                              for k=1:i-1
                                   
                                     variagroup(k+N-i+1)=I(k);
                              end
                              for k=1:N
                                   
                                     I(k)=variagroup(k);
                              end
                     break;         
                    end
                    
                end
                
                
                
                
          
            end
            
        end
     

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?