Better solution than mod() while indexing

In this cutout, order is incremented each time through a loop, most likely more times than there are indexes in colors. Is there a better way to grab values in indexes in colors that avoids the if statement entirely?
ndx = (mod(order, length(colors));
if ndx = 0
ndx = length(colors);
end
color = colors(ndx));

Risposte (1)

Put the last colour first:
colors = [colors(end), colors(2:end-1)];
Then, simply mod and add 1:
color = colors(mod(ndx, numel(colors)) + 1);
If the loop just contains the code shown and the increment, then the loop can easily be eliminated. We would need to know how ndx is incremented though.

Categorie

Richiesto:

il 3 Nov 2017

Risposto:

il 3 Nov 2017

Community Treasure Hunt

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

Start Hunting!

Translated by