how to split an array with a periodic set of elements as it reaches to the maximum elements?
    4 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Joseph
 le 23 Mai 2017
  
    
    
    
    
    Modifié(e) : Andrei Bobrov
      
      
 le 25 Mai 2017
            lets say i have an array with periodic set of elements such as below:
A=[2 2 2 3 3 4 4 5 5 5 1 1 1 2 2 2 2 3 3 4 4 4 4 5 5 1 1 2 3 3 4 4 4 5 5];
i want to split Array A in to 3 separate arrays(in this case) as it reach to element 5 as below:
B1=[2 2 2 3 3 4 4 5 5 5];
B2=[1 1 1 2 2 2 2 3 3 4 4 4 4 5 5];
B3=[1 1 2 3 3 4 4 4 5 5];
i greatly appreciate your help
thank you
0 commentaires
Réponse acceptée
  Andrei Bobrov
      
      
 le 24 Mai 2017
        B = mat2cell(A(:)',1,diff(find([true,diff([A(:)'== 5,0]) == -1])));
3 commentaires
  Andrei Bobrov
      
      
 le 25 Mai 2017
				
      Modifié(e) : Andrei Bobrov
      
      
 le 25 Mai 2017
  
			Please attach your array A with size [32025 x 1] as mat-file.
Plus de réponses (1)
  KSSV
      
      
 le 24 Mai 2017
        A=[2 2 2 3 3 4 4 5 5 5 1 1 1 2 2 2 2 3 3 4 4 4 4 5 5 1 1 2 3 3 4 4 4 5 5];
didx = diff(A==5) ;
idx = find(didx==-1) ;
idx = [0 idx length(A)] ;
N = length(idx)-1 ;
iwant = cell(N,1) ;
for i = 1:N
    iwant{i} = A(idx(i)+1:idx(i+1)) ;
end
celldisp(iwant)
Voir également
Catégories
				En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!