Azzera filtri
Azzera filtri

Using loop to sum value of an array and summation

5 visualizzazioni (ultimi 30 giorni)
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 Commenti
Stephen23
Stephen23 il 10 Giu 2023
Modificato: Stephen23 il 11 Giu 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 il 10 Giu 2023
thank you sir, the code is so simple and exactly what i need.

Accedi per commentare.

Risposta accettata

Alan Stevens
Alan Stevens il 10 Giu 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

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by