Need Help TroubleShooting If/Else Statement

1 visualización (últimos 30 días)
Jon Stapchuck
Jon Stapchuck el 11 de Mzo. de 2021
Comentada: Jon Stapchuck el 11 de Mzo. de 2021
Helo,
Basically I have an if/else statement to ensure a given value obtain from cosine and sine is between -180 and +180.
In other words, if the value ends up being 270-deg, I want it to be -90-deg instead.
I set up an if/else statement as follows, where phi2a comes from a value from a function.
phi2b = 180-phi2a;
if phi2b > 180
phi2b = phi2b-360;
else
phi2b;
end
When I do this, however, whenever phi2b is greater than 180, it still produces a value greater than 180.
I tried to do a sample code (below) to see if the syntax is correct, but this one ended up working when I change the value of A:
A = 1;
if A > 10
A = A+5;
else
A;
end
So if A=1, then it outputs 1. If A = 20, it outputs 25. This is how I want the other if/else to function.
I can show more of my code if need be.
Basically the phi2a is a vector running from 1 to N, where N is 4393. I then plot either phi1a, phi1b, phi2a, or phi2b (Not all of which is shown here), based on another if/else statement. I can show this code as well if it'll help.
If this is confusing please let me know so I can add more information.
Any help is appreciated. Thanks.
Edit: I've added a snippet of my whole code in case that helps.

Respuesta aceptada

the cyclist
the cyclist el 11 de Mzo. de 2021
Is it possible that your input value was greater than 540? Because if it was then it will still be greater than 180 after your if statement:
phi2b = 550;
if phi2b > 180
phi2b = phi2b-360
end
phi2b = 190
You could take care of this case by using a while loop instead:
phi2b = 550;
while phi2b > 180
phi2b = phi2b-360;
end
disp(phi2b)
-170
  7 comentarios
the cyclist
the cyclist el 11 de Mzo. de 2021
Editada: the cyclist el 11 de Mzo. de 2021
idx is a logical variable, the same length as phi2b, that is "true" when phi2b is greater than 180, and "false" when it is not:
phi2b = [179 180 181 182];
idx = phi2b > 180
idx = 1×4 logical array
0 0 1 1
The next line of my code then uses logical indexing to subtract 180 from the elements where idx = "true":
phi2b(idx) = phi2b(idx) - 180
phi2b = 1×4
179 180 1 2
Jon Stapchuck
Jon Stapchuck el 11 de Mzo. de 2021
Okay thank you for your help. That makes sense why my original method didn't work

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by