Elements in a vector
Show older comments
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 Comments
Giuseppe Pintori
on 20 Sep 2019
Stephen23
on 20 Sep 2019
"Is there a way to avoid using a for loop?"
Why?
Giuseppe Pintori
on 20 Sep 2019
Giuseppe Pintori
on 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
on 20 Sep 2019
Giuseppe Pintori
on 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
on 20 Sep 2019
Walter Roberson
on 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
on 21 Sep 2019
Stephen23
on 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
Answers (0)
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!