# Using AND Operator in “if” statements

3,167 次查看（过去 30 天）
Andrew 2011-5-10
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
##### 7 个评论显示 6更早的评论隐藏 6更早的评论
Jenny 2016-8-2
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 2011-5-10
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 2011-5-10
Thanks!

### 更多回答（1 个）

Sean de Wolski 2011-5-10
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
##### 3 个评论显示 2更早的评论隐藏 2更早的评论
Andrew Newell 2011-5-10
Good point.

### 类别

Find more on Loops and Conditional Statements in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by