# How to make a array from a loop?

조회 수: 1 (최근 30일)
Thanathip Boonmee 2019년 11월 25일
댓글: M 2019년 11월 25일
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.

댓글을 달려면 로그인하십시오.

### 답변 (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이전 댓글 1개 표시이전 댓글 1개 숨기기
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 CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

R2019b

### Community Treasure Hunt

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

Start Hunting!

Translated by