循环细胞

时间:2014-12-10 21:01:48

标签: matlab loops

我在网格上绘制正方形。正方形需要在单元格数组中设置ID。我期待ID按顺序遍历单元格中的每个ID,而不是循环遍历行。

Matlab expected and actual results

cell_id = cell(1, 2); % 1 x 5 cell array
cell_id{1, 1} = 1365; cell_id{1, 2} = 1256; cell_id{1, 3} = 6214; cell_id{1, 4} = 2587; cell_id{1, 5} = 1564;

hold on

for i = 1:2:12

count = 1;

for ii = 1:2:12

    plot(1*i , 1*ii, 's', 'MarkerSize', 50);

    if (count <= 5)
        id = cell_id(1,count);
        text(1*i, 1*ii, ['ID:',id]);
        count = count + 1;
    elseif (count > 5)
        id = cell_id(1,1);
        count = 1;
        text(1*i, 1*ii, ['ID:',id]);
    end   
  end
end

任何想法,谢谢。

1 个答案:

答案 0 :(得分:0)

您的外圈已超过i。你的内部循环超过ii(顺便说一句坏名字)。这意味着ii更改速度更快,并且您将其用于框和文本的y偏移量,这意味着您的计数ID将更改y方向。只需在iii来电中更改plottext的顺序。

例如,如果您使用循环变量xy,这将更加明显。

以下是一些其他调试技巧,可以帮助您了解未来类似的事情:

  • 只需打印i,ii和您的文字的值,订单就会很明显。
  • 简化代码的某些部分,以了解行为如何变化。例如,将for循环之一更改为1:1以仅生成单个行或列。
  • 将要打印的文本更改为某个可帮助您调试的中间值。例如,countiii