Я имею дело с проблемой, для которой изначально мне нужно было использовать вложенный цикл for
. Мне было интересно, есть ли способ объединить большое количество циклов for
в один.Сочетание многих для циклов в одном
Чтобы добавить к этому, я нашел ответ here, но для этого требуется сначала создать все возможные комбинации, что может быть плохо с точки зрения требований к памяти. Мои for
петли состоят из множества переменных, независимых друг от друга, с которым функция затрат вычисляется, например:
for x1 = 1:10
for x2 = 2:15
for x3 = 3:5
for x4 = 7:9
%and so on
cost = J(x1, x2, x3, x4) %or more
end
end
end
end
Если я знаю заранее, сколько переменных нужно использовать, есть способ сделать это блок проще?
Вы можете оптимизировать петли * в зависимости * от того, что он делает , Если бы общий способ создания вложенных циклов был одним, тогда не было бы вложенных циклов для начала. Также старайтесь избегать ненужного формирования. –
Добавить к моему предыдущему комментарию. Практически вся оптимизация кода будет основываться на слабом балансе между памятью и вычислительным временем. Как правило, вам нужно выбрать один и знать, что другой, вероятно, будет хуже. –
Другой альтернативой является изменение 'J()' для принятия векторов и возврат n-dim (n - количество заданных переменных) тензора, но это также возвращается к балансу между памятью и временем. – mpaskov