Replace some values of a vector with another vector which has a different size

11 views (last 30 days)
Hello
I've got the vector: source = [ 0 0 1 0 1]
and the vector a = [2 3],
which has a different size to source.
I'd like to replace in the source vector the elements that are equal to 1, with those of vector a.
The final vector b should be: b = [0 0 2 0 3]
Any thoughts on this?
Thank you!

Accepted Answer

Thorsten
Thorsten on 29 Apr 2015
Edited: Thorsten on 29 Apr 2015
source(source == 1) = a

More Answers (2)

pfb
pfb on 29 Apr 2015
b=zeros(size(source));
b(find(source))=a;
of course this works only if the number of nonzero elements in source are the same as the elements in a.

Stephen23
Stephen23 on 29 Apr 2015
Edited: Stephen23 on 29 Apr 2015
This can be achieved very simply using basic logical indexing:
>> A = [ 0 0 1 0 1];
>> B = [ 2 3];
>> A(A==1) = B
A = 0 0 2 0 3
On my computer this was almost twice as fast compared to using find and zeros.
  3 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!