# Replacing the zero entry of a vector with the corresponding entry of another vector of the same dimension.

2 views (last 30 days)
Hassan on 18 Feb 2018
Edited: Hassan on 20 Feb 2018
Hello everyone,
Suppose I have 2 vectors A=[0;2;0] and B=[3;5;7]. How can I write a command in MATLAB that simply replace the zero entries of vector A with the corresponding non-zero entries of vector B?
In general, if I have 2 vectors A and B of the same dimension, assuming vector A have some zero entries, but the vector B have no zero entries. How can I replace the all the zero entries of vector A with that of the corresponding entries of vector B?
Thanks for any help.

Birdman on 18 Feb 2018
A(A==0)=B(A==0)

Hassan on 18 Feb 2018
Birdman on 18 Feb 2018
A==0
This is logical indexing. It returns 1 for the elements that are zero, and 0 for the elements that are not. By the power of MATLAB, we can easily use this boolean output to obtain indexes for the zero elements of a in B vector as follows:
B(A==0)
This is equivalent to
idx=find(A==0);
A(idx)=B(idx);
but my initial answer is more efficient and faster.
Hassan on 18 Feb 2018
Of course. Thank you Mr. Birdman.