||在Matlab中的用法

时间:2012-04-04 21:06:03

标签: matlab

我正在写一个简单的IF条件。该功能是将矩阵的每一行判断为某些向量。代码如下:

  if (compareM(i,:)==[1, 0])||(compareM(i,:) ==[2, 1])
      match_1 = match_1 +1;
  else
      mismatch_1 = mismatch_1 +1;
  end

错误说''操作数到||和&&运算符必须可转换为逻辑标量值''。

compareM是一个n乘2的矩阵,我想知道错误是否由||产生操作。提前谢谢!

3 个答案:

答案 0 :(得分:1)

compareM(i, :)求值为1x2数值数组,因此compareM(i,:)==[1, 0]求值为1x2逻辑数组。对于||符号右侧的表达式也是如此。但是在||的每一侧都需要一个逻辑值,而不是1x2逻辑值数组。

如果你希望这个表达式在==的lhs上的值与rhs上的相应元素相同时求值为true,则在每一边包裹all()

all(compareM(i,:)==[1, 0]) || all(compareM(i,:) ==[2, 1])

答案 1 :(得分:1)

如果要比较矢量而不是标量值,则必须使用|运算符。因此,您可以获得逐元素成对比较的逻辑向量。要在IF语句中使用它,您必须将每个逻辑语句(然后使用||)或|的结果转换为带有ALL,ANY或其他函数的标量。

如果要与向量进行比较,请使用ISEQUAL函数作为

if isequal(compareM(i,:)==[1, 0]) || isequal(compareM(i,:)==[2, 1])

答案 2 :(得分:0)

if ((compareM(i,:)==[1, 0])||(compareM(i,:) ==[2, 1]))
    match_1 = match_1 +1;
else
    mismatch_1 = mismatch_1 +1;
end

请注意外部括号括起来。