# Using AND Operator in “if” statements

4,377 views (last 30 days)
Andrew on 10 May 2011
Hi,
When I type the following code:
if size([1 2 3])==size([4 5 6]) & size([4 5 6])==size([7 8 9])
'yes'
else
'no'
end
MATLAB Code Analyzer issues this warning message: "When both arguments are numeric scalars, consider replacing & with && for performance."
So, I use && instead of &:
if size([1 2 3])==size([4 5 6]) && size([4 5 6])==size([7 8 9])
'yes'
else
'no'
end
But when I run the updated script, MATLAB displays an error message in the Command Window:
??? Operands to the || and && operators must be convertible to logical scalar values.
What can I do to fix this? Thanks in advance.
Andrew DeYoung
Carnegie Mellon University
Jenny on 2 Aug 2016
Matt, I still use my notes from your class, and thanks for the help in this question. I needed to get this right.

Andrew Newell on 10 May 2011
The problem is that size returns a vector:
size([1 2 3])
ans =
1 3
if numel([1 2 3])==numel([4 5 6]) && numel([4 5 6])==numel([7 8 9])
disp('yes')
else
disp('no')
end
Or you could use all(size([1 2 3])==size([4 5 6]) etc.
I have also put in the disp commands to take care of the other warnings.
Andrew on 10 May 2011
Thanks!

Sean de Wolski on 10 May 2011
As an addendum to Andrew's thorough and good solution, you can check the sizes directly:
if(isequal(size([1 2 3]),size([4 5 6])))
disp('yes')
else
disp('no')
end
This will fail if the sizes are not the same but the number of elements (numel) is:
if(isequal(size([1 2 3]),size([4; 5; 6])))
disp('yes')
else
disp('no')
end
Andrew Newell on 10 May 2011
Good point.