MATLAB Answers

J
0

How to replace zeros in one matrix with another matrix

Asked by J
on 19 Dec 2016
Latest activity Commented on by Guillaume
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

  3 Comments

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?
J's answer moved here
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.
The first option in my answer matches this scenario. if is not needed.

Sign in to comment.

Tags

3 Answers

Answer by Andrei Bobrov
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);

  0 Comments

Sign in to comment.


Answer by Guillaume
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.

  0 Comments

Sign in to comment.


Answer by arwa
on 19 Dec 2016

x = [0 0 0 0 0 0 0 0 0 0]; z = [1 2 3 4 5 6 7 8 9 10]; for i=1:1:10 x(1:i)=z(1:i); end
then you can get x = [1 2 3 4 5 6 7 8 9 10] like z instead of zeros..
Do you mean this??

  0 Comments

Sign in to comment.