Hi guys, I need your help.
I have a vector like the following:
rho = [0.8 : -0.01 : -0.8];
The problem is: for every simulation matlab should take in consideration the value of the vector; basically, for the first simulation should take rho = 0.8, for the second rho = 0.79 and so on.
I don't know what function is able to do something like that.
Moreover, I would like to create at the end of each simulation a folder called as the parameter and the value taken into consideration in that simulation (simulation 1, rho= 0.8, foldername rho_0.8); I've tried with the nextname function but I'm not able to use it in this situation.
Thanks in advance for any help.

14 Kommentare

Giuseppe Pintori
Giuseppe Pintori am 20 Sep. 2019
Is there a way to avoid using a for loop? Furthermore, I do not understand how to apply your suggestion to my problem
Stephen23
Stephen23 am 20 Sep. 2019
"Is there a way to avoid using a for loop?"
Why?
Giuseppe Pintori
Giuseppe Pintori am 20 Sep. 2019
Basically, my variable of interest (rho) is just one of many variables that I must use to evaluate my model; I would prefer not to burden the computation.
I don't know if I explained myself well.
Stephen23
Stephen23 am 20 Sep. 2019
Bearbeitet: Stephen23 am 20 Sep. 2019
What exactly does "I would prefer not to burden the computation" mean with respect to MATLAB, and how do you imagine that this "burden"' is related to using a for loop?
Giuseppe Pintori
Giuseppe Pintori am 20 Sep. 2019
Depending on the values ​​assumed by the parameters from time to time, the simulation takes a lot of time. As a result, I would prefer the code to be as "lean" as possible
Stephen23
Stephen23 am 20 Sep. 2019
Bearbeitet: Stephen23 am 20 Sep. 2019
"Depending on the values ​​assumed by the parameters from time to time, the simulation takes a lot of time.
And yet you omitted to mention this important information from your question.
The first and most important step is to make your code as efficient as possible.
Some users want to ignore this important step and jump right in to much more exciting things like parallel computation, rather than learning the ways to write efficient code. It is well worth locating the bottle-necks and figuring out how to improve your algorithm:
After ensuring that your simulation is reasonably efficient you could investigate things like parfor:
But really the answer depends on the nature of your simulation, the nature of your input/output data, what computer HW you have available, etc.,
Giuseppe Pintori
Giuseppe Pintori am 20 Sep. 2019
The code was developed to compute a theoretical model and, however unstable, it meets my needs.
Inside it you can find parfor that are needed to get to my output but, in this phase, I have to do comparative static and the rho is one of them.
Going back to my initial request, is it possible to do what I requested without using additional for? Otherwise I can try with an additional one
Giuseppe Pintori
Giuseppe Pintori am 20 Sep. 2019
So, to avoid using a for, the only solution is to reduce the value of rho by hand for each simulation?
Stephen23
Stephen23 am 20 Sep. 2019
Bearbeitet: Stephen23 am 20 Sep. 2019
"Going back to my initial request, is it possible to do what I requested without using additional for? "
Possibly. As I wrote earlier, the answer depends on the nature of your simulation, the nature of your input/output data, what computer HW you have available, etc.
"So, to avoid using a for, the only solution is to reduce the value of rho by hand for each simulation?"
I have no idea what it means to "reduce the value of rho by hand for each simulation", or how this relates to for loops or to the efficiency of your code.
Giuseppe Pintori
Giuseppe Pintori am 20 Sep. 2019
It means not creating a vector; consequently I would have my variable rho which is reduced by 0.1 every simulation
Walter Roberson
Walter Roberson am 20 Sep. 2019
There is arrayfun(), which is just a hidden for loop (though these days it is built-in rather than a .m file)
The more general technique is to vectorize your code to be able to process multiple rho values at the same time. In some cases you can get a fair bit of performance improvement through vectorizing; in other cases, vectorizing can slow your code down.
I think you will find that adding a for loop over rho values will add very little cost compared to the cost of your simulation. for loops used to have higher costs than now, but performance was improved for them several years ago.
Giuseppe Pintori
Giuseppe Pintori am 21 Sep. 2019
Guys, at the moment I'm using this code in order to change the value of my parameter in every simulation:
rho = [0.8 : -0.01 : -0.8];
try
isempty(k)
catch
k = 0;
end
k = k+1;
var = rho(1,k);
Now, is there a way to create a folder named 'rho_ (value assumed by rho in the simulation)' for every simulation?
Stephen23
Stephen23 am 21 Sep. 2019
"is there a way to create a folder named 'rho_ (value assumed by rho in the simulation)' for every simulation?"
Of course:
doc sprintf
doc fullfile
doc mkdir

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 20 Sep. 2019

Kommentiert:

am 21 Sep. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by