Can this be vectorized?
2 views (last 30 days)
Show older comments
Patrick Mboma
on 30 Oct 2014
Commented: Patrick Mboma
on 30 Oct 2014
Dear all,
I have two vectors A and B of respective sizes na and nb, with na>=nb. All elements in B are unique while the elements in A are not. But all elements in A are in B. I would like to create a mapping between A and B and one way to do that is as follows:
A=nan(na,1);
for ii=1:nb
A(A==B(ii))=ii;
end
This works well be becomes prohibitively expensive for large na. And so my question is whether there is a way of getting rid of the for loop and/or creating this mapping differently.
Thanks,
P.
1 Comment
Accepted Answer
Andrei Bobrov
on 30 Oct 2014
Edited: Andrei Bobrov
on 30 Oct 2014
[lc,ii] = ismember(A,B);
A(lc) = ii(lc);
or with nan
out = ii;
out(~lc) = nan;
or jast (with zeros)
out = ii;
More Answers (0)
See Also
Categories
Find more on Logical 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!