Approach No. 1
%
A= {'paul',5 ,'sean' ,5,'rose', 1,'jim',4}
B= {'jim', 'paul', 'george', 'bill', 'sean' ,'rose'}
%
Ar = reshape(A,2,[]);
%
[sAr,idx] = sort(Ar(1,:))
Ar = [sAr ; Ar(2,idx)]
%
[detect,pos] = ismember(B,Ar(1,:))
%
row2 = num2cell(zeros(1,numel(B)));
row2(detect) = Ar(2,pos(detect)); %
%
out = reshape([B;row2],1,[])
Code Execution -
A =
'paul' [5] 'sean' [5] 'rose' [1] 'jim' [4]
B =
'jim' 'paul' 'george' 'bill' 'sean' 'rose'
out =
'jim' [4] 'paul' [5] 'george' [0] 'bill' [0] 'sean' [5] 'rose' [1]
Approach No. 2
If you want to work with numbers in cell arrays as strings, you can use this modified version -
%
A= {'paul',5 ,'sean' ,5,'rose', 1,'jim',4};
B= {'jim', 'paul', 'george', 'bill', 'sean' ,'rose'}
%
A = cellfun(@(x) num2str(x),A,'Uni',0)
%
Ar = reshape(A,2,[]);
%
[sAr,idx] = sort(Ar(1,:));
Ar = [sAr ; Ar(2,idx)];
%
[detect,pos] = ismember(B,Ar(1,:));
%
row2 = num2cell(zeros(1,numel(B)));
row2 = cellfun(@(x) num2str(x),row2,'Uni',0); %
row2(detect) = Ar(2,pos(detect)); %
%
out = reshape([B;row2],1,[])
Code Execution -
B =
'jim' 'paul' 'george' 'bill' 'sean' 'rose'
A =
'paul' '5' 'sean' '5' 'rose' '1' 'jim' '4'
out =
'jim' '4' 'paul' '5' 'george' '0' 'bill' '0' 'sean' '5' 'rose' '1'