• Регистрация
chernykh986
chernykh986 0.00
н/д

Нахождение индекса элемента в одномерном массиве

Здравствуйте, коллеги!

Имеется вектор (одномерный массив) вида, к примеру:

[5 7.3 1 2 -0.1 -0.2 0 0 1 1 2 1000 3 5 7 8.6 -2.1 ].

В этом массиве со 2-го по 12-й элемент (т.е. с числа 1 по число 1000, всего 10 чисел ) расположены некоторые действительные числа. Задача заключается в том, что необходимо найти индекс первого (или любого!) элемента, который меньше или равен нулю среди этих 10 чисел. Понятно, что сделать это в цикле не представляет труда. А можно ли (и как?) это сделать без цикла? И желательно не создавая новые массивы.

P.S. В реальности размер массива может быть несколько тысяч элементов и процедура должна выполняться на каждом расчетном шаге в S-функции Simulink'а, поэтому и интересует быстрый алгоритм. Нахождение такого элемента будет означать, что его "время жизни" закончилось и на это место можно записать новое значение.

Спасибо.

Теги

    01.10.2024

    Ответы

    • Centurio
      Centurio+42.00
      1.10.2024 20:15

      Без создания вспомогательного массива не получится.

      A=[5 7.3 1 2 -0.1 -0.2 0 0 1 1 2 1000 3 5 7 8.6 -2.1];
      ki=3;
      ke=10;
      f=find(A(ki:ke)<=0);
      indx=ki-1+f(1)
      • chernykh986
        chernykh9860.00
        2.10.2024 10:21

        Благодарю!

        Тоже пришел к выводу, что без вспомогательного массива не получится.

        • Jason87
          Jason870.00
          15.10.2024 14:16

          I agree!