Mapping elements of a matrix using a vector array
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    AP
      
 el 21 de Mayo de 2014
  
    
    
    
    
    Comentada: Javier
 el 24 de Mayo de 2017
            I have a matrix named A with size N×3. The values of the elements of A ranges from 1 to M. For example, A with size 8×3:
A = [ 1     2     3;
      1     4     5;
      5     6     7;
      1     3     4;
      5     6     7;
      1     4     7;
      4     3     2;
      7     8     9]
B is a vector array whose elements are the values of element of A. In the example above, B with size 9×1:
    B = [1 2 3 4 5 6 7 8 9]
I have another vector array named C with the size of B with which I want to replace element of B in A. In fact, C represents whether the elements of B in A has repeated more than for example 2. In my example, C with size 9×1:
    C = [0 0 0 0 0 0 0 1 1]
Here is the expected result, where the elements 1 to 7 are replaced by 0 and 8 and 9 are replaced by 1:
Anew = [ 0     0     0
         0     0     0
         0     0     0
         0     0     0
         0     0     0
         0     0     0
         0     0     0
         0     1     1]
How can I replace the elements of B in A with its corresponding values using C? Thank you.
1 comentario
Respuesta aceptada
  the cyclist
      
      
 el 21 de Mayo de 2014
        
      Editada: the cyclist
      
      
 el 21 de Mayo de 2014
  
      I am not 100% sure of which of the following two possibilities you want, given your example, but I think either
Anew = ismember(A,B(logical(C)))
or
[~,idx] = ismember(A,B);
Anew = C(idx)
is what you want. I think it's the latter.
1 comentario
Más respuestas (0)
Ver también
Categorías
				Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



