In my case I have X different job with Y different duration

D = [2 3 4 4 5 6 7 3 ];

so job X=1 will last Y=2.

I need to write a code that give me the following result:

tin1= 0 , tfin1=2, tin2= 2 , tfin2=2+3=5, tin3= 5 , tfin3=5+4=9, tin4=9 , tfin4=9+4=13........ So "tinx" means the inital time of job x, while "tfinx" means the final time of job x. if job one finish at 2, the job two will finish at 2 plus the duration of the job 2 (3) obtaining 5, and so on.

I want to write a code that is able to generate all this value

Does someone help me? the length of D should be variable so I would like to obtain a code that is independent from its length

Answer by Jan
on 4 Sep 2019

Edited by Jan
on 4 Sep 2019

Accepted Answer

Do not create a bunch of variables with an index hidden in the names: See TUTORIAL: Why and how to avoid Eval

I assume all you need is:

D = [2 3 4 4 5 6 7 3 ]

T = cumsum([0, D])

Now e.g. T(1) and T(2) contain everything you want. This is much better than tin(1) and tfin(1). If you really need 2 variables:

Tini = T(1:end-1);

Tfin = T(2:end);

Jan
2019 年 9 月 4 日

Len = size(D, 2);

s = 0;

for k = 1:Len

tini(k) = s;

tfin(k) = D(k) + s;

s = tfin(k);

end

Again: Do not hide indices in the names of the variables, but use indices for this job.

Or:

Len = numel(D);

tini = zeros(1, Len); % Pre-allocation

tfin = zeros(1, Len);

s = 0;

for k = 1:Len

tini(k) = s;

s = s + D(k);

tfin(k) = s;

end

luca
2019 年 9 月 4 日

luca
on 4 Sep 2019

thanks !

Sign in to comment.

Answer by Fabio Freschi
on 4 Sep 2019

Try this

>> tfin = cumsum(D)

tfin =

2 5 9 13 18 24 31 34

>> tin = [0 tfin(1:end-1)]

tin =

0 2 5 9 13 18 24 31

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## Jan (view profile)

## このコメントへの直接リンク

https://jp.mathworks.com/matlabcentral/answers/478867-create-a-for-cycle-over-an-array#comment_742094

## Steven Lord (view profile)

## このコメントへの直接リンク

https://jp.mathworks.com/matlabcentral/answers/478867-create-a-for-cycle-over-an-array#comment_742117

Sign in to comment.