Simple for/while loop question
显示 更早的评论
Is there an easy way to loop this. The first argument of a() has to be looped but the second should stay the same.
text(a(1,5),a(1,6),'1');
rectangle('position', [a(1,5) a(1,6) 50 50]);
text(a(2,5),a(2,6),'2');
rectangle('position', [a(2,5) a(2,6) 30 30]);
text(a(3,5),a(3,6),'3');
rectangle('position', [a(3,5) a(3,6) 30 30]);
5 个评论
Geoff Hayes
2016-3-31
Please clarify how the looping should handle the different size, 50x50 vs 30x30. Also, why is m used for the third rectangle (instead of a)?
a s
2016-4-3
per isakson
2016-4-3
编辑:per isakson
2016-4-3
"Is there an easy way to loop this."   I guess no! Had it been only the indicies of a that varied, but now there is also the strings, '1','2',3', and the numbers, 50 50, 30 30, 30 30, to worry about. One may put all that varies into a cell or struct array and loop over it. However, that might not meet the requirement easy. I sometimes do that to increase the readability of the code.
Star Strider
2016-4-3
Parenthetically, rather than drawing a rectangle around the text object (that seems to be what you’re doing), use an annotation object, specifically Create Text Box Annotation.
per isakson
2016-4-3
Is this another example of a XyProblem? Is it about the for-loop in Matlab or about numbers in boxes?
回答(1 个)
Image Analyst
2016-4-3
Try this:
% Create sample x,y coordinates and rectangle sizes
a = 70*rand(3,6)
rectSizes = [50,30,30];
% Plot them.
for k = 1 : length(rectSizes)
% Create a string to annotate with.
message = sprintf('%s', k+'0')
text(a(k,5),a(1,6), message, 'FontSize', 18, 'Color', 'b');
% Place the rectangle.
rectangle('Position', [a(k,5) a(k,6) rectSizes(k), rectSizes(k)], 'EdgeColor', 'r', 'LineWidth', 2);
end
grid on;
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!