MATLAB: Shaping a vector.

matrix manipulation

I have an original vector A = [0 0 0 2 5 3 6 0 0 0 9 5 6], after performing an operation on A for which I left out the zeros, I end up with a second vector B = [ 6 9 8 3 8 7 2]. Now the number of non-zero elements in A and B are equal. I want to make a third vector C that takes the shape of vector A but populated with elements from B such that C = [0 0 0 6 9 8 3 0 0 0 8 7 2].

Best Answer

>> A = [0 0 0 2 5 3 6 0 0 0 9 5 6]
B = [ 6 9 8 3 8 7 2]
idx=(A~=0);
A(idx)=B;
C = A
A =
0 0 0 2 5 3 6 0 0 0 9 5 6
B =
6 9 8 3 8 7 2
C =
0 0 0 6 9 8 3 0 0 0 8 7 2
>>