Logical operator not evaluating correctly
Mostrar comentarios más antiguos
Given the provided array X, create an array Y that is:
equal to 0 if the corresponding element of X is between -5 and +5, inclusive
equal to -1 if the corresponding element of X is less than -5
equalt to +1 if the corresponding element of X is greater than 5
Here is what I have:
Y = (~(X >= -5 & X <= 5) | (-1*(X < -5)) | (X>5)).
Why is the X < -5 not evaluationg to -1?
Respuesta aceptada
Más respuestas (2)
Walter Roberson
el 26 de En. de 2023
0 votos
A|B is an or test and returns a logical value -1 is nonzero which is considered true, and since you or everything together you are going to end up with logical true for those entries.
Try adding the results of the computation
I would do this in separate steps.
X = randi([-20, 20], [1 15])
Y = zeros(size(X));
Y(X < -5) = -1;
Y(X > 5) = 1
Categorías
Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!