3 views (last 30 days)

Show older comments

j=0;

for i = 1:1440

Z(i) = powerConsumption(i) - solarEnergyGenerated(i);

if (Z(i) < 0) && (j <1200) %Proceed if {Power consumption minus PV is less than 0} and {Battery level is less than 1200kWmin=20kWh}

j = -Z(i) + j; %Charging

elseif (Z(i) > 0) && (j>Z(i)) %Proceed if {Power consumption minus PV is more than 0} and {Battery level is more than Z(i)}

j = j - Z(i); %Discharging

end

end

I am trying to make a battery algorithm on when to charge and discharge. I am not sure how to make a array of 1440x1 from this loop.

I want to make this array to make a plot out of it.

M
on 25 Nov 2019

Edited: M
on 25 Nov 2019

You can do something like:

nb = 1440;

j = zeros(1,nb);

Z = zeros(1,nb);

for i = 1 : nb

Z(i) = powerConsumption(i) - solarEnergyGenerated(i);

if i > 2

j(i) = j(i-1) - Z(i);

end

end

You are actally doing the same thing in your 2 conditions "if" and "else".

Then you can plot j and Z :

t = 1 : nb;

plot(t,j);

M
on 25 Nov 2019

I want j to be an array of 1440x1

j = zeros(1440,1)

defines a vector of size 1440 x 1.

Then access each element with j(k), with k = 1 , ... , 1440

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

Start Hunting!