# Change the zeros to ones and the ones to zeros.

28 views (last 30 days)
I don´t know why my code to change the ones for zeros and the zeros to ones doesn´t work.
This is my code:
V = [ 1, 1, 1, 1, 0, 1, 0, 1]
V(V==0) = 1;
V(V==1) = 0;
C1 = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, V(2:8)]

Steven Lord on 25 Feb 2021
Let's look at V after the second and third steps:
V = [ 1, 1, 1, 1, 0, 1, 0, 1]
V = 1×8
1 1 1 1 0 1 0 1
V(V==0) = 1
V = 1×8
1 1 1 1 1 1 1 1
V(V==1) = 0
V = 1×8
0 0 0 0 0 0 0 0
You want to record which elements of V were equal to 1 before replacing all the 0 values with 1.
V = [ 1, 1, 1, 1, 0, 1, 0, 1];
previousOnes = V == 1;
V(V == 0) = 1;
V(previousOnes) = 0
V = 1×8
0 0 0 0 1 0 1 0
Or since you want to change 0 to 1 and vice versa, just subtract V from 1.
V = [ 1, 1, 1, 1, 0, 1, 0, 1];
newV = 1-V
newV = 1×8
0 0 0 0 1 0 1 0
Or use the not operator. Depending on what you want to do with it afterward you may need to convert it back to double by calling double() on it.
V = [ 1, 1, 1, 1, 0, 1, 0, 1]
V = 1×8
1 1 1 1 0 1 0 1
newV2 = ~V
newV2 = 1x8 logical array
0 0 0 0 1 0 1 0
newV2D = double(newV2)
newV2D = 1×8
0 0 0 0 1 0 1 0
Julen Vicente Pipaon on 25 Feb 2021
Thank you so much.