Please help me vectorizing the following code

n=2:nt;
sum1(n)=f(t(n),alpha)+(var).*bj(n).*u(1);
k=1:n-1;var_bj=(bj(k+1)-bj(k)).*(var);
for n=2:nt
sum2=0;
for k=1:n-1
sum2=sum2+var_bj.*u(n-k);
end
sumout2(n)=sum2;
u(n)=(sum1(n)-sumout2(n))/(var-beta);
end

1 Comment

Tell us more about the variables you have, for example, what are their sizes? What is your code trying to do?

Sign in to comment.

 Accepted Answer

For a vectorization, move the index vector from the for loop into the command. For the innermost loop:
sum2 = 0;
for k = 1:n-1
sum2 = sum2 + var_bj .* u(n-k);
end
becomes (I guess that var_bj is a scalar):
sum2 = sum(u(n - (1:n-1))) * var_bj;
This can be simplified:
sum2 = sum(u(1:n)) * var_bj;

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Asked:

on 14 Mar 2017

Answered:

Jan
on 14 Mar 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!