@mphys

Как понять выражение в MATLAB?

Есть в матлабе такая конструкция, взял из справки:
n = -5:1:5;
x = dirac(n);
idx = x == inf; 
x(idx) = 1;

Конструкция считает дельта-функцию Дирака и заменяет в ней бесконечность на единичку, чтобы функцию можно было визуализировать через plot.

Как понять предпоследнюю строчку? В каком порядке её выполняет компилятор?
Я нигде в "основах работы с matlab" не видел похожей конструкции, хотя по смыслу работы кода понятно, что в idx сохраняется индекс элемента, равного inf. Может есть справочная страница на счет таких финтов ушами? (я не встречал)
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
@mphys Автор вопроса
tldr
Так, ну начинаю разбирать сам.
Можно переписать так:
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;
работает именно так, как оно работает, первый раз вижу чтобы аргумент матрицы в круглых скобках был логическим массивом, обычно там просто порядковый номер элемента (или группы элементов).

Нашел мануал:
https://www.mathworks.com/help/matlab/math/array-i...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы