我从 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 将值 <=0 替换为 1 而不是 Inf。
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
知道为什么会这样吗?我猜它与逻辑E=A-b>0
步骤有关,但我不知道为什么它不同。
我的总体目标是找到最接近标量的向量的较大值的索引,我确实想到我可以跳过我认为导致问题的步骤并获得所需的结果,就像这样(使用A & b 已经定义如上):
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
但是,我仍然不明白为什么 Matlab 没有给出我上面预期的结果(在我意识到简单的解决方案之前,我已经完成了输入问题)。那么有谁知道为什么 Matlab 会给出意想不到的结果?
谢谢