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 を Inf ではなく 1 に置き換えます。
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 が予期しない結果をもたらす理由を知っている人はいますか?
ありがとう