2014-11-25 2 views
1

Можно ли векторизовать эти вычисления, чтобы избежать использования цикла '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 
+0

Пожалуйста, рассмотреть вопрос о принятии этого и других полезных решений, размещенных на вопросы, нажав на полых флажках рядом с ними. – Divakar

ответ

2

Смотрите, если это работает для вас -

new_vect = 1./sum(exp(-a*abs(bsxfun(@minus,vect,vect.')))) 
+0

Я печатал это ... Вы можете эквивалентно суммировать 1-й тусклый; потенциально быстрее –

+0

Эй, я заставил вас достичь 20 тысяч! Congrats !! Теперь у вас есть все сверхдержавы! :-) –

+0

@ LuisMendo Спасибо и спасибо! :) Отредактировано с этим. Да, возможно, последняя сверхдержава :) – Divakar

Смежные вопросы