How to prevent function output being overwritten in for loop?

10 views (last 30 days)
Hi there,
I have a for loop below which calls the same function "Optimiseenergy" in each iteration. There are 2 outputs from this function "Energyin" and"Energyout". Could anybody suggest how I can prevent the outputs from being overwritten in each iteration? Ideally I would like to save the outputs as Energyin1, Energyout1, Energyin2, Energyout2... etc
I tried changing the function call to this but it doesn't work.
[Energyin(i),Energyout(i)] = Optimiseenergy(at(i),dt(i+1),SOC(i),20);
Thank you
JN = 3; %
dt=[11 29 38]; % departure times
at=[14 33 42]; % arrival home times
for i=1:1
SOC(i) = SOC0 - (at(i)-dt(i))*1.22;
[Energyin,Energyout] = Optimiseenergy(at(i),dt(i+1),SOC(i),20);
for i=2:JN-1
SOC(i) = 20 - (at(i)-dt(i))*1.22;
[Energyin,Energyout] = Optimiseenergy(at(i),dt(i+1),SOC(i),20);

Accepted Answer

Simon on 19 Nov 2013
Edited: Simon on 19 Nov 2013
Use arrays to save the results:
% allocate arrays for results
Energyin = zeros(JN-1, 1);
Energyout= zeros(JN-1, 1);
for i=2:JN-1
SOC(i) = 20 - (at(i)-dt(i))*1.22;
% save results
[a, b] = Optimiseenergy(at(i),dt(i+1),SOC(i),20);
Energyin(i) = a;
Energyout(i) = b;

Sign in to comment.

More Answers (0)


Find more on Loops and Conditional Statements in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!