if tf < max(arr)
与if all(tf < max(arr))
我在第一个使用matlab编码器时遇到错误!
修改
我有
if (xf-x0 < small_dist)&&(v0 <= min(vmax0, vmaxf))
并考虑将其更改为
leftCmpStatement = all((xf-x0 < small_dist));
rightCmpStatement = all((v0 <= min(vmax0, vmaxf)));
if leftCmpStatement && rightCmpStatement
因为matlab编码器抱怨
并非每个元素都是1X1 double variable
答案 0 :(得分:1)
numel(max(arr))
为1
时,它们是相同的。如果没有,则tf < max(arr)
仅考虑第一个最大值。但由于所有max(arr)
元素都具有相同的值,因此它仍然有效。
但是,如果您使用的函数可能返回了不同的值,例如简单
if tf < arr
vs if all(tf < arr)
然后他们就不同了。 if all(tf < arr)
按预期工作,如果必须小于arr
的每个元素。然而if tf < arr
变得类似于if [true false true false false...]
并且(感谢Amro指出这一点)如果Matlab既非空并且所有elemnet都非零,那么Matlab将只会这样说。所以在我的编写示例中,它将是false
。所以故事的寓意是不要在Matlab中给if
一个多元素矩阵。所以我会if all(tf < max(arr))
只是为了与这条规则保持一致。