Прежде всего, векторизация не так важна, как это было раньше, из-за улучшений в компиляции кода до его запуска, но это все еще очень распространенная практика и может привести к некоторым улучшениям. Старая версия Matlab выполнялась по одной строке за раз, что оставляло бы цикл for намного медленнее, чем векторизованная версия того же кода.
Часть вашей матрицы, которая может быть векторизована, является внутренним циклом more for. Я покажу простой пример того, что вы пытаетесь сделать, я позволю вам взять пример и вставить его в свой код.
input=randn(5,5,3);
max(mean(mean(input,1),2))
По существу, внутренние два mean
принимают среднее значение входного массива, а внешнее max
найдет максимальное значение в диапазоне. Если вы хотите, вы можете разбить его шаг за шагом, и посмотреть, что он делает. mean(input,1)
будет принимать среднее значение по первому измерению, mean(input,2)
- по второму и т. Д. После того, как первые два средних значения выполнены, остается только вектор, с которым функция max легко сработает. Следует отметить, что размер вектора pre-max составляет [1 1 3], размеры сохраняются при выполнении этой операции.