Get every 4 values of a vector and change values
    7 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Nikolas Spiliopoulos
 le 4 Jan 2022
  
    
    
    
    
    Commenté : Nikolas Spiliopoulos
 le 4 Jan 2022
            Hi all,
I have a vector like this
a= [1 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0]
So I would like to take  every four values in a group, check if there are any ones  in it, and if yes change the four values to 1. otherwise leave zeros.
So the desired vector will be:
b= [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1]
can you help me with that?
thanks in advance,
Nikolas
0 commentaires
Réponse acceptée
  DGM
      
      
 le 4 Jan 2022
        
      Modifié(e) : DGM
      
      
 le 4 Jan 2022
  
      Maybe something like this
a = [1 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0]
b = repelem(any(reshape(a,4,[]),1),4)
I'm assuming the input is nominally binarized already (i.e. either logical class or numeric class but integer-valued and constrained to [0 1]).  If otherwise, you'll have to explicitly convert it to logical using some desired test.
If the output needs to be numeric class, cast it using double().
Plus de réponses (1)
  KSSV
      
      
 le 4 Jan 2022
        a = [1 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0] ;
b = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1] ;
idx = bsxfun(@plus, (1 : 4), (0 : numel(a) - 4).');
a = a(idx) ;
iwant = any(a,2)' 
0 commentaires
Voir également
Catégories
				En savoir plus sur Dynamic System Models 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!


