match index of arrays
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Tiina
 el 10 de Jun. de 2017
  
    
    
    
    
    Comentada: Tiina
 el 12 de Jun. de 2017
            Hi, I have a problem with matching and indexing. The problem was raised in this forum earlier and was solved. This is how it was raised
A = [9 10  11 12 13 14 15 16 17]'
B = [10 13 16; 999 900 950]'
The desired solution is
M =
       9     0
      10   999
      11     0
      12     0
      13   900
      14     0
      15     0
      16   950
      17     0
This can be attained as follows
M = A*[1 0]
M(ismember(A,B(:,1)),2) = B(:,2)
My problem is exactly the same but the solution is not working. The only difference I have is the size of A and B
A is too large and is of size(A)
 ans =
     1035593           1
B is small and is of size(B)
ans =
    72     2
Column 1 of B contains unique ids that match unique ids in A. Column 2 is the data to be matched given ids.
When I apply the solution above, I get Subscripted assignment dimension mismatch. I am not sure why this is happening, could you kindly advise or provide an alternative solution.
1 comentario
  Stephen23
      
      
 el 10 de Jun. de 2017
				
      Editada: Stephen23
      
      
 el 10 de Jun. de 2017
  
			>> M = A(:);
>> M(:,2) = 0;
>> [~,ia,ib] = intersect(A,B(:,1));
>> M(ia,2) = B(ib,2)
M =
     9     0
    10   999
    11     0
    12     0
    13   900
    14     0
    15     0
    16   950
    17     0
If you are having problems than you will need to check that every value in column one of B exists once in columns one of A.
Respuesta aceptada
  Walter Roberson
      
      
 el 10 de Jun. de 2017
        You would get that error if there are columns in B that are not matched in A.
[~, ia, ib] = intersect(A, B(:,1));
M(ia,:) = B(ib,:);
7 comentarios
  Walter Roberson
      
      
 el 11 de Jun. de 2017
				I loaded your data and then did
M = A*[1 0];
[~, ia, ib] = intersect(A, B(:,1));
M(ia,:) = B(ib,:);
there were no error messages.
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!


