为什么matlab中这两个max的实现有所不同?

时间:2013-09-22 16:38:53

标签: matlab

我希望得到数组中每个项目的最大值,而不是5个。这两个片段有什么不同?

values = max(values, 5);

values(values < 5) = 5;

有区别吗?

3 个答案:

答案 0 :(得分: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<5false,包含NaN值的元素将不会设置为5.如果您希望它的行为与max完全相同{1}}你可以试试这个:

>> values(~(values >= 5)) = 5
values =
     5     5     5     5   Inf

答案 1 :(得分:1)

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

常规案例max(A,B)中,输出包含每个元素的最大AB。那么一般等价物将是A(A<B) = B(A<B);

答案 2 :(得分:1)

AFAIK没有区别

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