Я получаю неожиданный результат от 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 дает неожиданный результат?
Спасибо