Find logical and (&&) for string array

7 Ansichten (letzte 30 Tage)
Mikel Jimenez
Mikel Jimenez am 24 Feb. 2023
Kommentiert: Mikel Jimenez am 25 Feb. 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.

Akzeptierte Antwort

Steven Lord
Steven Lord am 24 Feb. 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.

Weitere Antworten (1)

Dyuman Joshi
Dyuman Joshi am 24 Feb. 2023
Bearbeitet: Dyuman Joshi am 24 Feb. 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 Kommentar
Mikel Jimenez
Mikel Jimenez am 25 Feb. 2023
Thanks Dyuman, this seems to be working too.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Variables finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by