【问题标题】:Matlab Unexpected Result/Error? Replacing zeros in array with InfMatlab意外结果/错误?用 Inf 替换数组中的零
【发布时间】:2014-03-17 00:05:34
【问题描述】:

我从 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 将值

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&gt;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 会给出意想不到的结果吗?

谢谢

【问题讨论】:

    标签: matlab inf


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2014-01-29
      • 2019-01-09
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      相关资源
      最近更新 更多