vectorization of ismember function
2 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
Andrei Bobrov
on 8 Jun 2013
Edited: Andrei Bobrov
on 8 Jun 2013
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);
More Answers (0)
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!