How to make a array from a loop?

2 Ansichten (letzte 30 Tage)
Thanathip Boonmee
Thanathip Boonmee am 25 Nov. 2019
Kommentiert: M am 25 Nov. 2019
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.

Antworten (1)

M
M am 25 Nov. 2019
Bearbeitet: M am 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);
  3 Kommentare
Turlough Hughes
Turlough Hughes am 25 Nov. 2019
j = -Z(i) + j;
and
j = j - Z(i); % is also j = -Z(i) + j;
are equivalent calculations. So, as M pointed out, there is no need in that case for an if else to decide which of the above lines to implement.
M
M am 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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by