Find the values before an element repeated more than 4 times.
    2 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi everyone, 
I have an array like this: A=[ 1  2  3  4  5  0  0  6  7  0  9  0  0  0  10  11  12  0  0  0  0  0  0  0    8  9  10  11  0  0  0  0  0  ]
I would like to find the values which are the ones before 0 repeated more than 4 times. 
So here the answer should be 12 and 11.
Any help is appreciated.
0 commentaires
Réponse acceptée
  Adam Danz
    
      
 le 27 Jan 2020
        
      Modifié(e) : Adam Danz
    
      
 le 27 Jan 2020
  
      Input: A, numeric row vector
Output: valueBefore, a numeric vector of values prior to 4 or more consecutive 0s. 
A=[ 1  2  3  4  5  0  0  6  7  0  9  0  0  0  10  11  12  0  0  0  0  0  0  0  8  9  10  11  0  0  0  0  0  ]; 
dA = diff([inf,A,inf]==0); 
zeroCount = find(dA==-1) - find(dA==1);
zeroStart = find(dA==1); 
valueBefore = A(zeroStart(zeroCount>=4)-1);
Note, if the A vector starts with 4+ zeros, there will be an error since there are no values prior to the first element. 
2 commentaires
  Adam Danz
    
      
 le 27 Jan 2020
				The only requirements for the input is that it's a row vector.  If your vector is mx1, you just need to transpose it. 
data = data.'; 
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Logical 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!

