Matlab意外结果/错误?用Inf替换数组中的零

Matlab意外结果/错误?用Inf替换数组中的零,matlab,inf,Matlab,Inf,我从Matlab得到了一个意想不到的结果,我不知道为什么。我的目标是用Inf替换小于或等于零的值 以下是我预期的正确结果: C = [0 0 0 0 0 1 1 1 1 1 1]; C(C<=0)=Inf C = Inf Inf Inf Inf Inf 1 1 1 1 1 1 但是,我仍然不明白为什么Matlab没有给出我上面期望的结果(在我意识到简单的解决方案之前,我已经完成了问题的输入)。那么有人知道为什么Matlab会

我从Matlab得到了一个意想不到的结果,我不知道为什么。我的目标是用Inf替换小于或等于零的值

以下是我预期的正确结果:

C = [0 0 0 0 0 1 1 1 1 1 1];
C(C<=0)=Inf
C = Inf   Inf   Inf   Inf   Inf     1     1     1     1     1     1
但是,我仍然不明白为什么Matlab没有给出我上面期望的结果(在我意识到简单的解决方案之前,我已经完成了问题的输入)。那么有人知道为什么Matlab会给出意想不到的结果吗


谢谢

这是因为
E
是一个逻辑数组。可能的值为1或0。如果您使用
E=double(A-b>0)
您将获得预期的结果

A = [0     2     4     6     8    10    12    14    16    18    20];
b = 7;
E=A-b>0
E = 0     0     0     0     1     1     1     1     1     1     1
E(E<=0)=Inf
E = 1     1     1     1     1     1     1     1     1     1     1     
F=A-b
F = -7    -5    -3    -1     1     3     5     7     9    11    13
F(F<=0)=Inf
F = Inf   Inf   Inf   Inf     1     3     5     7     9    11    13
[~,ind]=min(F)
ind = 5