2

与 5 相比,我想获得数组中每个项目的最大值。这两个片段之间有什么不同?

values = max(values, 5);

values(values < 5) = 5;

有区别吗?

4

3 回答 3

2

如果您的矩阵具有NaN值,则会有所不同:

>> values = [1 2 NaN -Inf Inf]
values =
     1     2   NaN  -Inf   Inf

>> max(values, 5)
ans =
     5     5     5     5   Inf

>> values(values < 5) = 5
values =
     5     5   NaN     5   Inf

如您所见max(NaN, 5) == 5,但因为NaN<5isfalse包含NaNvalue 的元素不会设置为 5。如果您希望它的行为与您完全一样max,可以尝试以下操作:

>> values(~(values >= 5)) = 5
values =
     5     5     5     5   Inf
于 2013-09-23T08:55:00.463 回答
1

在这个实现中,两者都会给出相同的结果。

一般情况下max(A,B),输出包含每个元素的最大值A或处的最大值。那么一般等价物将BA(A<B) = B(A<B);

于 2013-09-22T16:48:12.637 回答
1

AFAIK没有区别

但是第二个你不能保留你的旧矩阵,但是如果你改变输出变量名,你可以使用第一个。

于 2013-09-22T16:48:33.030 回答