## How to replace zeros in one matrix with another matrix

### J (view profile)

on 19 Dec 2016
Latest activity Commented on by Guillaume

### Guillaume (view profile)

on 19 Dec 2016
Hello, how to replace zeros in one matrix with another matrix using if statement? Dimensions are the same; first matrix has 10 zeros and second matrix has 10 numbers. Thanks for answers J

Geoff Hayes

### Geoff Hayes (view profile)

on 19 Dec 2016
J - how does the condition work? Are you iterating over each element and if the element is zero then replace with the equivalent element in the other matrix?
Geoff Hayes

### Geoff Hayes (view profile)

on 19 Dec 2016
Matrix B=[1 0 0 0 0;2 3 0 0 0;4 5 6 0 0;7 8 9 10 0;11 12 13 14 15] You can see that "triu" of matrix B is made of zeros. I need to replace zeros in matrix B using IF statement with matrix A=[1 2 3 4 5;6 7 8 9 10]. Orientation is set and number of zeros is matching matrix A.
Guillaume

### Guillaume (view profile)

on 19 Dec 2016
The first option in my answer matches this scenario. if is not needed.

### Andrei Bobrov (view profile)

on 19 Dec 2016

A = [1:3, 0,0 7,12,0]';% your first array
B = randi(20,8,1); % your second array
t = A == 0;
A(t) = B(t);

### Guillaume (view profile)

on 19 Dec 2016

An example would clarify what you want. Possibly:
To replace all zero values in A by consecutive values in B, B must have as many elements as there are zeros in A:
assert(numel(B) == numel(A == 0)); %B must have as many elements as there are zeros in A
A(A == 0) = B %replace zeros values in A by values in B
or to replace zeros values in A by values in B in the same position, B must be the same size as A:
assert(isequal(size(B), size(A)));
A(A == 0) = B(A == 0)
An if is most likely not needed.