我正在使用数组中的零组合检查Matlab中的对象有效性。我想使用&&运算符这样做,但当我在单个if语句中使用它时,它给我一个错误: 操作数到||和&&运算符必须可转换为逻辑标量值。
我的代码:
for ii=1:1000
if (Vec(ii,:) ~= 0) && (isvalid(MyObj))
%opeartions
end
end
答案 0 :(得分:1)
这些运算符执行类似于类似C运算符的快捷方式评估。那是一个|| b只评估a的b是假的,而a&& b如果为真,则仅计算b。它不会逐点进行这种快捷方式评估。
由于至少有一个操作数似乎是布尔条件的向量(Vec(ii,:)~=0
),因此Matlab告诉您无法执行快捷方式评估。
你把它放在if中,所以你无论如何都需要一个标量布尔值。我猜你的意思是标量第一个操作数为any(Vec(ii,:)~=0)
而不是向量。