# for loop starting from 1

16 views (last 30 days)

Show older comments

Hi

Is there a way to make this start from 1, when 1 is not in Player{4,1}(:,1)?

i want to take the sum from 1:127, 127:162, 162:285 and so on, is this possible?

thanks

% Player{2,1}(:,2) is a vector with a length of 590

% Player{4,1}(:,1) =

127

162

285

300

316

323

493

500

584

for j = 1:length(Player{4,1})-1

Output(j,1) = sum(Player{2,1}(Player{4,1}(j,1):Player{4,1}(j+1,1),2))

end

##### 3 Comments

Bob Thompson
on 11 Apr 2019

### Answers (1)

Jan
on 11 Apr 2019

a = Player{4,1}(:, 1);

b = Player{2,1}(:, 2);

Output = zeros(length(a)-1, 1); % Pre-allocate

Output(1) = sum(b(1:a(j+1)));

for j = 2:length(a)-1

Output(j) = sum(b(a(j):a(j+1)));

end

Or

Output = zeros(length(a)-1, 1); % Pre-allocate

a(1) = 1;

for j = 1:length(a)-1

Output(j) = sum(b(a(j):a(j+1)));

end

##### 1 Comment

Bob Thompson
on 11 Apr 2019

Edited: Bob Thompson
on 11 Apr 2019

Wouldn't using a(1) = 1; remove the current value of a(1) = 127? I would think that this would mean that Output(1) would end up spanning from 1:162, instead of 1:127. I would think you would need to concat instead.

a = Player{4,1}(:, 1);

a = [1; a];

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!