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 commentaires

Cris LaPierre
Cris LaPierre le 15 Mar 2021
Share your code.
Calum Mackenzie
Calum Mackenzie le 15 Mar 2021
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 le 15 Mar 2021
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 le 15 Mar 2021
Hopefully this better explains what I'm trying to do
Cris LaPierre
Cris LaPierre le 15 Mar 2021
Save your variables to a mat file and attache the mat file using the paperclip icon.

Connectez-vous pour commenter.

Réponses (1)

Cris LaPierre
Cris LaPierre le 15 Mar 2021

0 votes

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 commentaires

Calum Mackenzie
Calum Mackenzie le 16 Mar 2021
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 le 16 Mar 2021
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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by