1

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

  1. 他们有什么区别
  2. 推荐哪一个。
  3. 它们完全等效吗?

使用 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

4

1 回答 1

1

numel(max(arr))如果is ,它们是相同的1。如果不是,那么 iftf < max(arr)将只考虑第一个最大值。但是由于所有max(arr)元素都将具有相同的值,因此它仍然可以工作。

但是,如果您使用的函数可能返回不同的值,例如简单 的if tf < arrvsif all(tf < arr)那么它们是不同的。if all(tf < arr)按预期工作,如果必须小于arr. 但是if tf < arr变成了类似的东西if [true false true false false...](感谢 Amro 指出这一点)Matlab 只会在它既非空且所有元素都非零时才认为这是真的。所以在我编造的例子中,它将是false. 所以这个故事的寓意是不要if在 Matlab 中给出多元素矩阵。因此,我会if all(tf < max(arr))坚持与该规则保持一致。

于 2013-09-19T15:32:57.803 回答