在“if”语句中使用AND运算符

4021次浏览(过去30天)
安得烈
安得烈 2011年5月10日
你好
当我键入以下代码时:
如果大小([1 2 3])==大小([4 5 6])和大小([4 5 6])==大小([7 8 9])
“是的”
其他的
“不”
终止
Matlab代码分析器发出这个警告消息:“当两个参数都是数值标量时,考虑替换和&和性能。”
因此,我使用&&而不是&:
如果大小([1 2 3])==大小([4 5 6])&&size([4 5 6])==大小([7 8 9]))
“是的”
其他的
“不”
终止
但是 当我运行更新的脚本时, MATLAB在中显示一条错误消息 命令窗口:
?操作数对于| |和&&运算符必须可转换为逻辑标量值。
我能做些什么来解决这个问题?提前谢谢。
安德鲁·德扬
卡内基梅隆大学
7评论
珍妮
珍妮 2016年8月2日
马特,我还在用你们班的笔记,谢谢你们在这个问题上的帮助。我需要把这件事做好。

登录以发表评论。

公认的答案

安德鲁·纽厄尔
安德鲁·纽厄尔 2011年5月10日
问题是大小返回一个向量:
大小([1 2 3])
ans=
1 3
相反,使用 呆火驼 :
如果numel([1 2 3])==numel([4 5 6])&&numel([4 5 6])==numel([7 8 9]))
disp(“是的”)
其他的
disp(“不”)
终止
或者你可以用 全部(大小([1 2 3])==大小([4 5 6])
我也加入了 disp 用于处理其他警告的命令。

更多答案(1)

肖恩德沃尔斯基
肖恩德沃尔斯基 2011年5月10日
作为Andrew彻底且良好解决方案的补充,您可以直接检查尺寸:
如果(相等(大小([1 2 3]),大小([4 5 6]))
disp(“是的”)
其他的
disp(“不”)
终止
如果大小不同,但元素数(numel)为:
如果(相等(大小([1 2 3]),大小([4;5;6]))
disp(“是的”)
其他的
disp(“不”)
终止
3评论
安德鲁·纽厄尔
安德鲁·纽厄尔 2011年5月10日
说得好。

登录以发表评论。

下载188bet金宝搏

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!