Iterator for n-dimensional problems. Allows you to use a single for loop instead of nested loops
Ever have a simulation problem where the parameters being tested frequently change, but the computation stays the same? This iterator flattens complex and crazy-making nested loops into a single loop that iterates over all combinations of parameters.
As a result, it's very easy to change the iteration parameters without rewriting loops, reindenting code, updating indices, etc.
Sample nested loop code like this:
avalues = [1 2]; bvalues = [10 20]; cvalues = [100 200 300];
for ai = 1:length(avalues)
for bi = 1:length(bvalues)
for ci = 1:length(cvalues)
scoretable(ai,bi,ci) = avalues(ai) + bvalues(bi) + cvalues(ci);
end
end
end
Can be flattened into code like this, and any parameter can be added or removed by changing only paramvariables and paramvalues:
paramvariables = {'A' 'B' 'C'};
paramvalues = { {1 2} {10 20} {100 200 300}};
piter = paramiterator(paramvariables,paramvalues);
for i = 1:length(piter)
setvalues(piter,i);
scorelist(i) = A + B + C;
end
scoretable = listtotable(piter,scorelist);
Results can be easily displayed with displaytable (http://www.mathworks.com/matlabcentral/fileexchange/27920-displaytable).
Using the valuechanged setting, you can test whether a parameter has changed since the last iteration, before running some computation. This is like nesting the computation within only some of the loops, making paramiterator a full replacement for nested loops.
Now also supports iterating over multiple paired parameters simultaneously, for additional convenience and compatibility.
Cite As
Matt Caywood (2024). Iterator for n-dimensional problems. Allows you to use a single for loop instead of nested loops (https://www.mathworks.com/matlabcentral/fileexchange/28333-iterator-for-n-dimensional-problems-allows-you-to-use-a-single-for-loop-instead-of-nested-loops), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.4.0.0 | fixed valuechanged bug, added reset function
|
||
1.3.0.0 | additional support for paired parameters |
||
1.2.0.0 | added parameter change testing |
||
1.1.0.0 | added example to description |
||
1.0.0.0 |