С новыми версиями циклов MATLAB не так дорого, как вы думаете.Если ваша функция F
является чем-то относительно простым, которое можно легко векторизовать, то обычно вы можете получить более высокую производительность, чем при использовании цикла for, но если F
представляет собой довольно сложную операцию, на самом деле может потребоваться больше работы при попытке обойтииспользуя цикл for.
Не зная, что на самом деле делает F
, трудно дать вам конкретный ответ.Однако в дополнение к векторизации ваших операций есть несколько функций, которые можно использовать вместо циклов for в определенных ситуациях.Вот некоторые примеры: ARRAYFUN , CELLFUN , STRUCTFUN и BSXFUN .
В качестве примера того, какчтобы использовать BSXFUN , допустим, что выполняемая вами операция F
включает умножение каждого столбца B
на значение в соответствующем столбце A
.Другими словами, C(:,i) = A(1,i).*B(:,i);
для всех i
.Вы можете сделать это, используя BSXFUN следующим образом:
C = bsxfun(@times,B,A);