I would like to get an cell array output by matching 2 cell arrays and returning with corresponding matched values from other cell array.

I have 2 cell arrays A(6*1) and B(35*2).
A= {'MEG0522';'MEG0523';'MEG0512';'MEG0513';'MEG0312';'MEG0313'};
B= {'MEG0522','LF';'MEG0523','LF';'MEG0512','LF';'MEG0513','LF';'MEG0312','LF';'MEG0313','LF';'MEG0342','LF';'MEG0343','LF';'MEG0122','LF';'MEG0123','LF';'MEG0822','LF';'MEG0823','LF';'MEG0533','LF';'MEG0532','LF';'MEG0543','LF';'MEG0542','LF'{'MEG0923','RF';'MEG1212','RF';'MEG1213','RF';'MEG1223','RF';'MEG1222','RF';'MEG1412','RF';'MEG1413','RF';'MEG0943','RF';'MEG0942','RF';'MEG0933','RF';'MEG0932','RF';'MEG1232','RF';'MEG1233','RF'};
I would like to get an output by matching A with B, returning a cell array say C(6*2) with A values in the column 1 and corresponding B values in column 2.
C = {'MEG0522','LF';'MEG0523','LF';'MEG0512','LF';'MEG0513','LF';'MEG0312','LF'};
Values will not be in an orderly fashion. I would appreciate any support from community members.

 Risposta accettata

Please, let me know if the following sentence solves your problem:
B(ismember(B(:,1),A),:)

4 Commenti

Hi Carlos, Thanks for your answer. But in the output, there are no repetitions. The values are selected only once, even though input cell values are repeated more than once.
Ex: A cell has 96 values, of which 30 are duplicates or triplicates. When I try to use ismember function, it skips repeated values and consider it only once in the output. Any suggestions would really be appreciated.
In that case, I propose you the following solution:
Flag = zeros(size(B(:,1)));
for i = 1:length(A)
Flag = Flag | strcmp(B(:,1),A(i));
end
C = B(Flag,:);
If the above code does not produce the intended result, please ask again, I will be happy to devise another solution.

Accedi per commentare.

Più risposte (1)

Just because I'm miserable with loops would using intersect meet your needs? Something like
[c,s,t] = intersect(A,B);
C = B(s,:)

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by