if-statements for reassigning values

Given: Write a script that creates a random integer N, which is in the range [-100,100]. If that number is in the range [-20,20], reassign N to be the current value of N multiplied by 2. If the number is greater than 20, reassign N to be the square root of the current value. Otherwise, reassign N to be the current value divided by 4.
Find: Use an if-statement to complete this.
Issue: I'm getting errors stating I don't know how to use '='. To me, my solution makes sense. But I have trouble with syntax in MATLAB.
My Solution:
N=randi([-100,100]);
if N=[-20,20]
N=N*2
else if N>20
N=sqrt(N)
else
N=N/4
end

 Respuesta aceptada

Voss
Voss el 22 de Mzo. de 2024
Use
if N >= -20 && N <= 20
And remove the space in "else if".

5 comentarios

Spaceman
Spaceman el 22 de Mzo. de 2024
Eureka! Of course. Now I get it. I want to accept both yours and Mr. Lords answer, but unfortunately I can only pick one.
Voss
Voss el 22 de Mzo. de 2024
Glad it makes sense!
Spaceman
Spaceman el 8 de Abr. de 2024
Thank you so much for your help!
Voss
Voss el 8 de Abr. de 2024
You're welcome!
Spaceman
Spaceman el 8 de Abr. de 2024
You're a real one!

Iniciar sesión para comentar.

Más respuestas (1)

Let's look at the exact text of the error you received.
N=randi([-100,100]);
if N=[-20,20]
Incorrect use of '=' operator. Assign a value to a variable using '=' and compare values for equality using '=='.
N=N*2
else if N>20
N=sqrt(N)
else
N=N/4
end
Using "N = [-20 20]" attempts to assign a vector with two elements to N. Assignment is not allowed in the condition part of an if statement.
Using "N == [-20 20]" (assuming N is compatibly sized) compares elements of N with elements of the vector [-20 20]. Comparison is allowed in the condition part of an if statement.
But you don't want to check if the elements in N are equal to -20 and 20. You want to check if they're in that interval. For that use the four inequality relational operators like < and >=. The and, & and or, | operators will also be of use.

1 comentario

Spaceman
Spaceman el 22 de Mzo. de 2024
Genius. This makes complete sense I forget I am generally only using logical operators with if and elseif statements. Also as Voss pointed out, I had a space in my elseif. Thank you for clearing that up.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Versión

R2023b

Etiquetas

Preguntada:

el 22 de Mzo. de 2024

Comentada:

el 8 de Abr. de 2024

Community Treasure Hunt

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

Start Hunting!

Translated by