2014-12-10 4 views
0

Я рисую квадраты на сетке. У квадратов должен быть 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 

Любые идеи, спасибо.

+0

Почему этот ожидаемый результат? Нам нужно больше деталей, чтобы знать, что должен делать алгоритм. –

+0

@JaviV, квадраты являются RF-боксами, а идентификатор представляет собой каналы, определенные где-то в другом месте, но я не включил это, чтобы упростить это. Поэтому из-за того же идентификатора не может следовать тот же идентификатор, который отображается в результатах. – AnotherUser

+0

Я так и думал о таких деталях. Тем не менее, я имею в виду, как мы знаем, каков правильный порядок, который должен быть дан. Из вашего образца выведите шаблоны, которые мы можем извлечь, мы не знаем, правильны ли они. –

ответ

0

Ваш внешний контур превышает i. Ваш внутренний цикл превышает ii (к слову, плохие имена). Это означает, что ii меняется быстрее, и вы используете его для смещения ваших полей и текста, что означает, что ваш идентификатор счета будет изменять направление y. Просто измените порядок i и ii на звонки plot и text.

Это было бы более очевидно, если бы вы использовали, например, переменные цикла x и y.

Вот несколько советов отладки, которые помогут вам выяснить, подобные вещи в будущем:

  • Просто вывести значения I, II, и ваш текст, и порядок будет очевиден для вас ,
  • Упростите некоторые части кода, чтобы увидеть, как изменяется поведение. Например, измените одну из циклов for на 1: 1, чтобы создать только одну строку или столбец.
  • Измените текст, который вы печатаете на некоторое промежуточное значение, которое поможет вам отлаживать. Например, count, или i, или ii.
Смежные вопросы