Using loop to sum value of an array and summation

I have 2000 row vector which each array has 1008 column.
I need to sum every array to only 4 column, so every 252 item, i sum it, so the array now has 4 column.
For example, i use only 1 row vector which has 12 column and every 3 item i sum it:
J=[1 2 3 4 5 6 1 2 3 4 5 6];
for i=1:length(J)
a=sum(J(1:3));
b=sum(J(4:6));
c=sum(J(7:9));
d=sum(J(10:12));
end
p0=[a b c d]
p0 = 1×4
6 15 6 15
After that, i have to do summation:
for j=1:4
f=j*p0(j);
h(j)= sum(f);
end
h
h = 1×4
6 30 18 60
I can call 'h' too like h(3) is 18.
I can do it for small input like this, how to code for big vector?
How to summation up to 2000 vector and can call every 'h'?
May i know, summation mostly start with 0, but looping with (for) command cannot do it, ''Array indices must be positive integers or logical values."
Is there any command to use to start with 0?

2 Comments

The standard MATLAB approach:
J = [1,2,3,4,5,6,1,2,3,4,5,6];
P = sum(reshape(J,[],4),1)
P = 1×4
6 15 6 15
H = J(1:4).*P
H = 1×4
6 30 18 60
thank you sir, the code is so simple and exactly what i need.

Sign in to comment.

 Accepted Answer

Here's one way:
J=[1 2 3 4 5 6 1 2 3 4 5 6];
step = 3;
ix = 1:step:numel(J);
for i = 1:numel(ix)
p(i) = sum(J(ix(i):ix(i)+step-1));
end
disp(p)
6 15 6 15

More Answers (0)

Categories

Asked:

on 10 Jun 2023

Edited:

on 11 Jun 2023

Community Treasure Hunt

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

Start Hunting!