Continue simulation: resize workspace variables

4 次查看(过去 30 天)
Hello!
I have run a simulation for 10.000 increments. Now I want to continue on this simulation so that in total 30.000 increments will be run.
For this purpose I want to use a loop to look at all the workspace variables and preallocate them without losing the older values:
for all variables in the workspace
if size(variable,1)==10000
variable(30000,:)=0
elseif size(variable,2)==10000
variable(:,30000)=0
end
end
How can I do this?
I found the following things that could be an ingredient:
list=who;
size(char(list(1)));
  3 个评论
Amy
Amy 2017-2-28
Nothing is changed except for the number of increments that I want to run and the final time that I want to run it.
Sudarshan Kolar
Sudarshan Kolar 2017-2-28
You can write a script that runs the model for 10 increments. Saves the data in an array and re-run the simulation for say 20 increments.
As an example, say my model has a "To workspace" block that logs a variable called "var1" every simulation.
storeData = []; %preallocate this for speed
sim('vdp','StopTime','10');
storeData = [storeData var1];
sim('vdp','StartTime','10','StopTime','20');
storeData = [storeData var1];
sim('vdp','StartTime','20','StopTime','30');
storeData = [storeData var1];
You can also use SimState for this.

请先登录,再进行评论。

采纳的回答

Amy
Amy 2017-2-28
Thank you for your responses.
I solved my problem by doing the preallocation using A(30000,:)=0 instead of A=zeros(30000,xxx).

更多回答(1 个)

Walter Roberson
Walter Roberson 2017-2-27

类别

Help CenterFile Exchange 中查找有关 Modeling 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by