Можно ли векторизовать эти вычисления, чтобы избежать использования цикла 'for'?Как выполнить векторизация в Matlab
a=5; b=10;
vect=log([10:-1:1]+b);
for i=1:length(vect)
new1=exp(-a*abs(vect(i)-vect));
new_vect(i)=1/sum(new1);
end
Можно ли векторизовать эти вычисления, чтобы избежать использования цикла 'for'?Как выполнить векторизация в Matlab
a=5; b=10;
vect=log([10:-1:1]+b);
for i=1:length(vect)
new1=exp(-a*abs(vect(i)-vect));
new_vect(i)=1/sum(new1);
end
Смотрите, если это работает для вас -
new_vect = 1./sum(exp(-a*abs(bsxfun(@minus,vect,vect.'))))
Я печатал это ... Вы можете эквивалентно суммировать 1-й тусклый; потенциально быстрее –
Эй, я заставил вас достичь 20 тысяч! Congrats !! Теперь у вас есть все сверхдержавы! :-) –
@ LuisMendo Спасибо и спасибо! :) Отредактировано с этим. Да, возможно, последняя сверхдержава :) – Divakar
Пожалуйста, рассмотреть вопрос о принятии этого и других полезных решений, размещенных на вопросы, нажав на полых флажках рядом с ними. – Divakar