1

我正在使用hold(Ax, 'on'). 为了管理每次添加新行时更新的图例,我将我的图例附加为:

reshape(sprintf('Zone #%02d',1:ii), 8, ii)'

ii循环迭代计数器在哪里。这会将图例条目生成为,Zone #01Zone #02Zone #03现在
,我想生成图例条目而不是上面Zone # 1 and 2 Intersection的条目比如下图:Zone # 2 and 3 IntersectionZone # 3 and 4 Intersectionreshape(sprintf('Zone # %01d and %01d Intersection', 1:ii, 2:ii + 1), 27, ii)ii3

在此处输入图像描述

你能看出我哪里出错了吗?一如既往的感谢!

4

1 回答 1

2

是的 - Matlab 解释您的语句的方式,它将首先“消耗”整个第一个数组,然后是第二个。所以如果你说

sprintf('%d %d ', 1:5, 2:6)

输出将是

1 2 3 4 5 2 3 4 5 6

碰巧的是,由于您尝试做事的方式而使您“几乎正确”了一点,这变得令人困惑。

实现您想要的正确方法是确保 matlab 使用变量的顺序是您需要的顺序。这样做的一个例子是

sprintf('%d %d ', [1:3; 2:4])

当 matlab 访问你创建的数组时

1 2 3
2 3 4

它是通过向下移动来实现的——所以它看到了

1 2 2 3 3 4

要生成您想要的图例,请使用

reshape(sprintf('Zone # %01d and %01d Intersection', [1:ii; 2:ii + 1]), 27, ii)'

这导致

Zone # 1 and 2 Intersection
Zone # 2 and 3 Intersection
Zone # 3 and 4 Intersection
Zone # 4 and 5 Intersection
Zone # 5 and 6 Intersection

ii = 5. 注意我转置了的输出reshape来实现这一点(那是'在行尾)

于 2013-07-29T13:48:26.830 回答