Using loop to sum value of an array and summation

2 Ansichten (letzte 30 Tage)
DoinK
DoinK am 10 Jun. 2023
Bearbeitet: Stephen23 am 11 Jun. 2023
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 Kommentare
Stephen23
Stephen23 am 10 Jun. 2023
Bearbeitet: Stephen23 am 11 Jun. 2023
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
DoinK
DoinK am 10 Jun. 2023
thank you sir, the code is so simple and exactly what i need.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Alan Stevens
Alan Stevens am 10 Jun. 2023
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

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by