在条形图中绘制具有圆形重复宽度的水平条

时间:2015-01-14 05:43:16

标签: matlab for-loop

enter image description here

为了尝试绘制这个图,我使用的代码是:

figure; 
axis equal;
axis([0 100 0 100]); 

 for i = 0:10:90
 rectangle('position',[0 i (i+10) 10], 'facecolor', 0.5+zeros(1,3));
 end

使用此代码时,步骤的大小会不断增加,当i = 50时,步骤不会返回10.如何使用此单for循环将步骤保持在10到50之间?

1 个答案:

答案 0 :(得分:2)

这不是很糟糕!只需在mod来电中添加rectangle语句:

figure; 
axis equal;
axis([0 100 0 100]); 

for i = 0:10:90
    rectangle('position',[0 i mod(i,50)+10 10], 'facecolor', 0.5+zeros(1,3));
end

我们注意到你的循环从0到90分为10步。mod语句正在做的是,当你超过50时它允许回绕。因此,在i = 0,做mod(0,50)给我们0,我们需要添加10,以便您的初始宽度为10.接下来在i = 10mod(10,50) + 10给我们20,我们继续前进i = 40我们的宽度为50.在i = 50旁边,我们应该将宽度重置为10和mod(50,50) = 0,因为没有余数。从图表的外观来看,一旦宽度达到50,您希望将其重置为宽度10,这样mod运算符的用途就是这样。

这就是我得到的:

enter image description here