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));
回答(1 个)
Guillaume
2017-11-3
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.
类别
在 帮助中心 和 File Exchange 中查找有关 Desktop 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!