Как я могу суммировать выходные данные функции в цикле?

Я пытаюсь просто суммировать все числа «LengthofRoute» для итераций от 1 до 1000, чтобы затем рассчитать среднюю длину пути по 1000 итерациям. Как я могу это сделать? Перерыл весь интернет и не могу найти правильную процедуру. Dijsktra1 выполняет и возвращает целое число, обычно меньше 4.

J=0;
f = 0;
nf = 0;
while J<1000
    LengthofRoute = [];
    B = RandomMatrix(0,1,10,10);
    J=J+1;
    [LengthofRoute, RouteTaken] =Dijkstra1(B, 10, 1);

    if LengthofRoute > 0
        f = f + 1;
        % number of feasible occurrences
    else 
        nf = nf + 1;
        % number of nonfeasible occurrences
    end
    LengthofRoute = LengthofRoute + LengthofRoute
end

Теперь вы вычисляете LengthofRoute каждый раз заново, используя Dijkstra1() и сохраняете удвоенное значение в LengthofRoute в конце каждой итерации. В начале следующей итерации вы снова очищаете его. Чтобы придерживаться текущей реализации, вы можете использовать текущую сумму, которую вы инициализируете вне цикла (например, LORrunning = 0), и добавлять LengthofRoute к ней в конце каждого цикла: LORrunning = LORrunning + LengthofRoute.

Julius 29.05.2019 22:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны просто использовать отдельный аккумулятор для суммирования LengthofRoute:

Предположим, что LengthofRouteSum накапливает сумму.

  1. Инициализировать LengthofRouteSum перед циклом: LengthofRouteSum = 0;
  2. Накопить LengthofRoute в нижней части петли: LengthofRouteSum = LengthofRouteSum + LengthofRoute;

Следующий код должен выполнить эту работу:

J=0;
f = 0;
nf = 0;
LengthofRouteSum = 0;
while J<1000

    B = RandomMatrix(0,1,10,10);
    J=J+1;    
    [LengthofRoute, RouteTaken] =Dijkstra1(B, 10, 1);

    if LengthofRoute > 0
        f = f + 1;
        % number of feasible occurrences
    else 
        nf = nf + 1;
        % number of nonfeasible occurrences
    end
    LengthofRouteSum = LengthofRouteSum + LengthofRoute;
end

сработало в первый раз, а теперь почему-то продолжает суммироваться до бесконечности. Есть идеи, почему?

Engineering45 29.05.2019 22:13

Я понял. Мне пришлось изменить оператор if, чтобы он был if LengthofRoute == Inf, тогда это невозможно!

Engineering45 29.05.2019 22:34

Другие вопросы по теме