我希望得到数组中每个项目的最大值,而不是5个。这两个片段有什么不同?
values = max(values, 5);
和
values(values < 5) = 5;
有区别吗?
答案 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<5
为false
,包含NaN
值的元素将不会设置为5.如果您希望它的行为与max
完全相同{1}}你可以试试这个:
>> values(~(values >= 5)) = 5
values =
5 5 5 5 Inf
答案 1 :(得分:1)
在这个实现中,两者都会给出相同的结果。
在常规案例max(A,B)
中,输出包含每个元素的最大A
或B
。那么一般等价物将是A(A<B) = B(A<B);
答案 2 :(得分:1)
AFAIK没有区别
但是第二个你不能保留你的旧矩阵,但是如果改变输出变量名,你可以使用第一个矩阵。