【问题标题】:Operands to the || and && operators must be convertible to logical scalar values Matlab|| 的操作数和 && 运算符必须可转换为逻辑标量值 Matlab
【发布时间】:2014-05-11 13:51:56
【问题描述】:
我正在使用数组中的零组合在 Matlab 中检查对象的有效性。我想使用 && 运算符这样做,但是当我在单个 if 语句中使用它时,它给了我错误:
|| 的操作数和 && 运算符必须可转换为逻辑标量值。
我的代码:
for ii=1:1000
if (Vec(ii,:) ~= 0) && (isvalid(MyObj))
%opeartions
end
end
【问题讨论】:
标签:
arrays
matlab
validation
if-statement
【解决方案1】:
这些运算符执行类似于可比较的 C 运算符的快捷评估。那是一个|| b 仅评估 b 的 a 为假,a && b 仅评估 b 如果 a 为真。它不会逐点进行这种快捷评估。
由于您的操作数中至少有一个似乎是布尔条件向量 (Vec(ii,:)~=0),Matlab 告诉您不能执行快捷计算。
你把它放在一个 if 中,所以无论如何你都需要一个标量布尔值。我猜你的意思是标量第一个操作数为any(Vec(ii,:)~=0),而不是向量。