how to compare two values that are repeated in two vectors?
    5 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    giancarlo maldonado cardenas
 le 2 Juin 2022
  
    
    
    
    
    Modifié(e) : giancarlo maldonado cardenas
 le 6 Juin 2022
            Hello everyone, I'm new to matlab, I wanted to know how I can compare 2 values that are repeated between two vectors, I'll explain myself better, for example I have these two vectors.
A = [10 56 34 11 34 ];
B = [10 56 34 11 ];
Now I need to compare element by element, I mean...
vector B = [(10) 56 34 11]; element 10 is repeated in vector A? No then it is assigned the number 1.
vector B = [10 (56) 34 11 ]; element 56 is repeated in vector A? No then it is assigned the number 1.
vector B = [10 56 (34) 11 ]; element 34 is repeated in vector A? Yes! then it is assigned the number 0.
vector B = [10 56 34 (11) ]; element 34 is repeated in vector A? Yes! then it is assigned the number 1.
the result has to be an array, equal to this.
result= [10 1
             56 1
             34 0
             11 1]
any help will be very helpful.
2 commentaires
  Image Analyst
      
      
 le 2 Juin 2022
				
      Modifié(e) : Image Analyst
      
      
 le 2 Juin 2022
  
			What if the numbers are not in the same index in the two vectors, like
A = [10 56 34 11 34 ];
B = [11 10 56 34 5 ];
are the 10, 56, and 34 repeated in B?  What's your definition of repeated?
And is this your homework (sounds like it)?
Réponse acceptée
  Voss
      
      
 le 2 Juin 2022
        
      Modifié(e) : Voss
      
      
 le 2 Juin 2022
  
      A = [10 56 34 11 34 ];
B = [10 56 34 11 ];
result = [B.' sum(A==B.',2)<=1]
Breaking that expression down:
A==B.' % compare each element of A to every element of B
sum(A==B.',2) % sum each row to get the number of occurrences in A of each element of B
sum(A==B.',2)<=1 % if the number of occurrences is NOT 2 or more, that's a 1 in the result, otherwise a 0
2 commentaires
  giancarlo maldonado cardenas
 le 5 Juin 2022
				
      Modifié(e) : giancarlo maldonado cardenas
 le 6 Juin 2022
  
			
  Voss
      
      
 le 5 Juin 2022
				
      Modifié(e) : Voss
      
      
 le 5 Juin 2022
  
			I don't understand what you mean by "if label 0 is repeated, if label 1 is not repeated, but this label can also be 0 with a probability of 10%", but here is how you can perform the task from the original question using a for loop:
A = [10 56 34 11 34 ];
B = [10 56 34 11 ];
result = [B.' zeros(numel(B),1)];
for ii = 1:numel(B)
    result(ii,2) = nnz(A==B(ii))<=1;
end
disp(result);
Maybe that can be of use in your actual task.
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Run Unit Tests 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!


