How to replace elements if it is true
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi,
I have below cell array matrices:
A={'DF','3';'FR','4';'RR','2';'RT','4'};
B={'AB','1';'BC','3';'CD','5';'DF','7';'FR','9';'RT','8';'TA','1';'AR','3';'TY','4'};
if any of the row in B is member in A, the replace the corresponding second column element by seconf column element of A. I use the below code,
close all
clear all
clc
A={'DF','3';'FR','4';'RR','2';'RT','4'};
B={'AB','1';'BC','3';'CD','5';'DF','7';'FR','9';'RT','8';'TA','1';'AR','3';'TY','4'};
indx=ismember(B(:,1),A(:,1));
B(indx,2)=A(indx,2);
but it give the error:
??? Index exceeds matrix dimensions.
Error in ==> ScoreCompare at 7 B(indx,2)=A(indx,2);
My desired output should be:
AB  1
BC  3
CD  5
DF  3
FR  4
RT  4
TA  1
AR  3
TY  4
Many thanks in advance.
0 comentarios
Respuestas (1)
  Jan
      
      
 el 18 de Abr. de 2017
        
      Editada: Jan
      
      
 el 24 de Abr. de 2017
  
      In B(indx,2)=A(indx,2) the index "indx" would concern both arrays. You need both outputs of ismember instead:
[LiB, LocA] = ismember(B(:,1), A(:,1));
B(LiB, 2)   = A(LocA, 2);  % [EDITED] Does not work for missing B
[EDITED]:
B(LiB, 2)   = A(LocA(LiB), 2);
3 comentarios
Ver también
Categorías
				Más información sobre Matrix Indexing en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


