Так, ну начинаю разбирать сам.
Можно переписать так:
idx = (x == inf);
Это тоже работает. Если выполнить отдельно выражение в скобках:
>> x == inf
ans =
1×11 logical array
0 0 0 0 0 1 0 0 0 0 0
то оно работает логично, сравнивает каждый элемент с Inf и выдает логическое да/нет.
Теперь вопрос сводится к тому, почему
x(idx) = 1;
работает именно так, как оно работает, первый раз вижу чтобы аргумент матрицы в круглых скобках был логическим массивом, обычно там просто порядковый номер элемента (или группы элементов).