How to prevent function output being overwritten in for loop?

3 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
SOC(1)=SOC0;
for i=1:1
SOC(i) = SOC0 - (at(i)-dt(i))*1.22;
[Energyin,Energyout] = Optimiseenergy(at(i),dt(i+1),SOC(i),20);
end
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);
end

Accepted Answer

Simon
Simon on 19 Nov 2013
Edited: Simon on 19 Nov 2013
Hi!
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;
end
  3 Comments
Simon
Simon on 19 Nov 2013
Edited: Simon on 19 Nov 2013
Then, store them in a cell array.
% allocate arrays for results as matrix
Energyin = cell(JN-1, 1);
Energyout= cell(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;
end

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!