Asked by Andrew Alkiviades
on 24 Sep 2012

Hi I am trying to find an output which is the sum of every 24 rows of a 8760x1 vector below as hourly_deficit. Therefore I am trying to sum rows 1:24, 25:49, 50:73 etc etc

I am trying to do this on the line below

for idx_number_panels = 1:length(number_panels) % range of PV panel units examined

for idx_number_turbines = 1:length(number_turbines) % range of wind turbine units examined

for idx_number_batteries = 1:length(number_batteries) % range of battery units examined

for h=2:8759 %# hours

hourly_deficit(idx_number_panels,idx_number_turbines,idx_number_batteries, h) = hourly_annual_demand(h) - (hourly_annual_PV(h)*number_panels(idx_number_panels)) - (hourly_annual_WT(h)*number_turbines(idx_number_turbines));

Answer by Matt Fig
on 24 Sep 2012

Edited by Matt Fig
on 24 Sep 2012

Accepted Answer

If A is 8760-by-1, and you want to find the sum of every 24 elements, such that you will end up with 365 sums, then do:

sum(reshape(A,24,365))

As an example you can see easier, get the sum of every two elements of a 10-by-1:

A = (1:10)'

B = reshape(A,2,5)

sum(B)

Answer by Daniel Shub
on 24 Sep 2012

Edited by Daniel Shub
on 24 Sep 2012

I am not sure what all the code you posted has to do with anything ...

If I have a 8760x1 array

x = randn(8760, 1);

I can reshape it to be 24x365 with

y = reshape(x, 24, 365);

and then sum each of the 365 columns

z = sum(y);

EDIT

You could also filter the data

z = filter(ones(24, 1), 1, x);

z = z(24:24:end);

Sign in to comment.

Answer by Honglei Chen
on 24 Sep 2012

Edited by Honglei Chen
on 24 Sep 2012

Not sure what your end format is, but the following code adds every 24 rows and retain all the results in one column

reshape(sum(reshape(x,24,[])),[],1)

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.