MATLAB: Find elements of an array in another array

arrayfindismember

Hello,
Let's say I have 2 arrays of double, call then A and B. If both have unique entries and I want to find the position of each element of A in array B I can do:
[~, pos] = ismember(A,B);
What if the elements of A show up multiple times in B and I want to get the first time they show up or the last time they show up? I know I can do
pos = zeros(length(A),1);
for k = 1:length(A)
pos(k) = find(B == A(k),1,'first');
end;
But is there a better, more efficient way of doing it? For loops are not exactly in the spirit of Matlab as far as I know.
Thanks, Alex

Best Answer

Maybe in your case, all element in A are present in B
A=[1 2 3 4 5 6 7]
B=[12 13 2 4 3 2 4 2 25 1 6 7 5]
pos=arrayfun(@(x) find(B==x,1),A)