MATLAB: Vectorization of ismember function

stringsvectorization

Hello, I am interested in using the ismember function for strings by row with out using a for loop. For example I would have
A = {'cat','dog','bird'}
as my input vector and
B = {'cat','dog';'dog','bird'}
using ismember in a for loop
for k = 1:2
M(k,:) = ismember(A,b{k,:});
end
would return the matrix;
M = [1 1 0 ; 0 1 1].
Right now I have this written in a for loop but I was wondering if there is a way to do it without one. Thank you in advance.

Best Answer

M = cell2mat(arrayfun(@(ii)ismember(A,B(ii,:)),(1:size(B,1))','un',0));
or
[~,b] = ismember(B,A);
M = accumarray([repmat((1:size(b,1))',size(b,2),1),b(:)],1);