MATLAB: Find & replace data in array

MATLABreplace data in array

Hi, I have two arrays.
A=[7 14 21 28 35 42 49 56 63 70 77 84 91]
B=[22 55]
I wanna find the number in A which is close to the number in B and to replace the number in A by the number in B. Finally, A will be
A=[7 14 22 28 35 42 49 55 63 70 77 84 91].
Is there any better and faster algorithm to solve this issue? Thanks

Best Answer

[~,p] = min(abs(bsxfun(@minus,A,B')),[],2);
A(p) = B;
There is an inherent ambiguity possible in this problem. An element in A that happens to be the closest one to both of two different elements of B could legitimately be replaced by either B element. In the above algorithm it is always the later one in B that does the replacing in such cases.