Циклы больше не являются плохими в MATLAB благодаря таким оптимизациям компилятора, как ускорение по времени (JITA) . и т. д. В большинстве случаев я заметил, что решение с циклами в текущих версиях MATLAB намного быстрее, чем сложные (хотя и крутые: D) однострочные.
bsxfun
может решить проблему , но, по моему опыту, , как правило, также имеет проблемы с памятью, но меньше, чем repmat
.
Таким образом, синтаксис будет:
AA = bsxfun(@minus,A,b)
, где b
- вектор, а A
- ваша большая матрица
Но я призываю вас профилировать зацикленную версию, а затем принять решение! Скорее всего, из-за ограничений памяти у вас может не быть выбора:)