How to make a array from a loop?
2 ビュー (過去 30 日間)
古いコメントを表示
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.
0 件のコメント
回答 (1 件)
M
2019 年 11 月 25 日
編集済み: M
2019 年 11 月 25 日
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 件のコメント
Turlough Hughes
2019 年 11 月 25 日
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
2019 年 11 月 25 日
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
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!