Change the zeros to ones and the ones to zeros.

96 visualizaciones (últimos 30 días)
Julen Vicente Pipaon
Julen Vicente Pipaon el 25 de Feb. de 2021
Editada: emjey el 10 de En. de 2023
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)]

Respuesta aceptada

Steven Lord
Steven Lord el 25 de Feb. de 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

Más respuestas (1)

emjey
emjey el 6 de En. de 2023
Editada: emjey el 10 de En. de 2023
you can do it in one line like this
>> V = [ 1, 1, 1, 1, 0, 1, 0, 1];
>> abs(V-1)
ans =
0 0 0 0 1 0 1 0

Categorías

Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by