Iterator for n-dimensional problems. Allows you to use a single for loop instead of nested loops

Using an iterator, you can flatten complex arbitrarily nested loops to a simple single loop.
579 descargas
Actualizado 12 abr 2017

Ver licencia

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.

Citar como

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. Recuperado .

Compatibilidad con la versión de MATLAB
Se creó con R2008a
Compatible con cualquier versión
Compatibilidad con las plataformas
Windows macOS Linux
Categorías
Más información sobre Loops and Conditional Statements en Help Center y MATLAB Answers.

Community Treasure Hunt

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

Start Hunting!
Versión Publicado Notas de la versión
1.4.0.0

fixed valuechanged bug, added reset function
improved description
updated description more

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