Предполагая, что вы используете MATLAB 2016b или более позднюю версию, которая поддерживает автоматическое вещание c, вы можете изменить:
h_norm = repmat(braindip(i,:), size(nobrain,1),1);
nn = sqrt(sum((h_norm - nobrain).^2,2));
на
nn = sqrt(sum((braindip(i,:) - nobrain).^2,2));
Второй вариант: устранить sqrt. Используйте:
nn_qbd = sum((braindip(i,:) - nobrain).^2,2);
if min(nn_qbd) > alpha_qbd
Где alpha_qbd=alpha.^2
, очевидно, рассчитывается только один раз заранее. Это приводит к третьему шагу, нет необходимости хранить nn_qbd в переменной. Вас интересует только минимум:
nn_qbd_min = min(sum((braindip(i,:) - nobrain).^2,2));
if nn_qbd_min > alpha_qbd
При сравнении исходного кода с третьим вариантом время выполнения примерно сокращается вдвое.