操作数到||和&&运算符必须可转换为逻辑标量值Matlab

时间:2014-05-11 13:51:56

标签: arrays matlab validation if-statement

我正在使用数组中的零组合检查Matlab中的对象有效性。我想使用&&运算符这样做,但当我在单个if语句中使用它时,它给我一个错误: 操作数到||和&&运算符必须可转换为逻辑标量值。

我的代码:

for ii=1:1000
 if (Vec(ii,:) ~= 0) && (isvalid(MyObj))
%opeartions
end
end

1 个答案:

答案 0 :(得分:1)

这些运算符执行类似于类似C运算符的快捷方式评估。那是一个|| b只评估a的b是假的,而a&& b如果为真,则仅计算b。它不会逐点进行这种快捷方式评估。

由于至少有一个操作数似乎是布尔条件的向量(Vec(ii,:)~=0),因此Matlab告诉您无法执行快捷方式评估。

你把它放在if中,所以你无论如何都需要一个标量布尔值。我猜你的意思是标量第一个操作数为any(Vec(ii,:)~=0)而不是向量。