matlab比较差异

时间:2013-09-19 15:27:51

标签: matlab conditional-statements matlab-coder

if tf < max(arr)if all(tf < max(arr))

  1. 他们之间有什么区别
  2. 推荐哪一个。
  3. 他们完全相同吗?
  4. 我在第一个使用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

1 个答案:

答案 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))只是为了与这条规则保持一致。