If statement indexing in a for loop

I have made a for loop which models energy going being stored every hour. Three times a day energy is removed from storage. so far so good. I want to be able to check if the energy stored reaches a minimum value in the hour before energy is removed and if it does not then to add suffcient energy to reach the minimum value and record how much has been added. I'm trying to use an IF statement to interact with three columns in my matrix but am unable to make it work, it seems within the for loop my matrix becomes a vector? How can I isolate my three columns?

5 件のコメント

Cris LaPierre
Cris LaPierre 2021 年 3 月 15 日
Share your code.
Calum Mackenzie
Calum Mackenzie 2021 年 3 月 15 日
restored = transpose(reshape(stored,24,92));
reavlesuse = transpose(reshape(avlesuse,24,92));
topupstored = zeros(92,24);
for i = 2:numel(restored);
if topupstored(i) % is in columb 7,12 or 16
% if topupstored(i) < min then find min - topupstored(i) and add to topupstored(i)
% else
% else
topupstored(i) = restored(i-1) + reavlesuse(i);
end
topupstored(i) = max(min(restored(i), ub), lb);
end
Calum Mackenzie
Calum Mackenzie 2021 年 3 月 15 日
Sorry not sure how to upload vairables, I've added the comments to try and express what I want to achieve.
Calum Mackenzie
Calum Mackenzie 2021 年 3 月 15 日
Hopefully this better explains what I'm trying to do
Cris LaPierre
Cris LaPierre 2021 年 3 月 15 日
Save your variables to a mat file and attache the mat file using the paperclip icon.

サインインしてコメントする。

回答 (1 件)

Cris LaPierre
Cris LaPierre 2021 年 3 月 15 日

0 投票

I would do this without a for loop.
  • Compute min-columns 7,12,16
  • Set any values <0 to 0 (you don't have to add to these rows to reach the minimum)
  • Add the result to the previous hour (column?)

2 件のコメント

Calum Mackenzie
Calum Mackenzie 2021 年 3 月 16 日
I don't think this will work since the energy stored is dependant on the previous hour. So if I add 'top up' energy the first time there is a shortfall, that extra energy will be carried forwards to subsequent hours and likley reduce and may eliminate subsiquent shortfalls. Thats why i think it needs to be done sequentially in a loop?
Cris LaPierre
Cris LaPierre 2021 年 3 月 16 日
Ok, so add it to columns (7:end) the first time, etc.
You are going to understand the problem better than any of us. We can only operate on the information you've shared.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

製品

リリース

R2020b

質問済み:

2021 年 3 月 15 日

コメント済み:

2021 年 3 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by