Find logical and (&&) for string array

12 visualizaciones (últimos 30 días)
Mikel Jimenez
Mikel Jimenez el 24 de Feb. de 2023
Comentada: Mikel Jimenez el 25 de Feb. de 2023
Hi,
I normally use && operations with numeric arrays, like:
if arrayX==1 && arrayY ==2
z=10
elseif arrayX==2 && arrayY==1
z=20
end
Now, I'm trying to do the same thing with string arrays, but cannot find the way to do it correctly, the && operand does not work here. Example:
if arrayX=="Left" && arrayY=="Right"
z=10
elseif arrayX=="Right" && arrayY=="Left"
z=20
end
Any help with this very much appreciated.
Thanks.

Respuesta aceptada

Steven Lord
Steven Lord el 24 de Feb. de 2023
That should work as long as the string arrays you're using in your comparisons are scalars.
arrayX = "Left";
arrayY = "Right";
if arrayX=="Left" && arrayY=="Right"
z=10
elseif arrayX=="Right" && arrayY=="Left"
z=20
end
z = 10
arrayX = "Right";
arrayY = "Left";
if arrayX=="Left" && arrayY=="Right"
z=10
elseif arrayX=="Right" && arrayY=="Left"
z=20
end
z = 20
It won't work if they're non-scalar string arrays, just like it wouldn't work with numeric arrays if they were non-scalar. I've wrapped each of these code segments in a try / catch block so I can show you the same behavior with both a non-scalar string array and a non-scalar numeric array.
try
arrayX = ["Left", "Left"];
arrayY = "Right";
if arrayX=="Left" && arrayY=="Right"
z=10
elseif arrayX=="Right" && arrayY=="Left"
z=20
end
catch ME
fprintf("This code threw error:\n%s\n", ME.message)
end
This code threw error: Operands to the logical AND (&&) and OR (||) operators must be convertible to logical scalar values. Use the ANY or ALL functions to reduce operands to logical scalar values.
try
arrayX = [1 2];
arrayY = 2;
if arrayX==1 && arrayY ==2
z=10
elseif arrayX==2 && arrayY==1
z=20
end
catch ME2
fprintf("This code threw error:\n%s\n", ME2.message)
end
This code threw error: Operands to the logical AND (&&) and OR (||) operators must be convertible to logical scalar values. Use the ANY or ALL functions to reduce operands to logical scalar values.
Both code segments threw the same error.

Más respuestas (1)

Dyuman Joshi
Dyuman Joshi el 24 de Feb. de 2023
Editada: Dyuman Joshi el 24 de Feb. de 2023
Use strcmp or isequal to compare strings
str1 = "Left";
str2 = "Right";
if strcmp(str1,"Left") && strcmp(str2,"Right")
z=10
elseif strcmp(str1,"Right") && strcmp(str2,"Left")
z=20
end
z = 10
  1 comentario
Mikel Jimenez
Mikel Jimenez el 25 de Feb. de 2023
Thanks Dyuman, this seems to be working too.

Iniciar sesión para comentar.

Categorías

Más información sobre Variables en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by