2013-05-05 2 views
0

Я не понимаю этот кусок кода цикла for в matlab, я знаю, что петли в matlab обычно выглядят так: for ii=1:2:100, так что он начинается с 1 до 100 и на каждой итерации вы добавляете 2. Но здесь у меня есть это условие в цикле, и я не понимаю, что он делает:сложный matlab для цикла с матрицей

for ii=[1:w:rd(1)-w-border, rd(1)-w-border+1], 
    ... 
end; 

w и border целые числа, передаваемые в качестве аргументов и rd является размер изображения/матрицы (rd = size(image);)

Может кто-нибудь объяснить мне, как петли работают в matlab с такими условиями? Спасибо заранее.

+2

для меня это выглядит как стандартный цикл 'MATLAB': я бы рекомендовал вам понять, что происходит в квадратных скобках' [] '. Для остальных @Shai дал вам несколько полезных советов. – fpe

ответ

2

For петля в MATLAB может выполнять операторы для определенного набора значений индекса: Например, следующий код будет отображать все элементы в наборе [1,5,8,17]:

for s = [1,5,8,17] 
disp(s) 
end 

Ваш код for ii=[1:w:rd(1)-w-border, rd(1)-w-border+1] похож. Его как набор 1:w:rd(1)-w-border с дополнительным элементом rd(1)-w-border+1.

Его как написав этот комплект [1,2,3,4,5,8] как [1:1:5, 8] Надеюсь, его теперь ясно.

2

for аргумент - это вектор. итератор цикла ii принимает одно значение для вектора для каждой итерации цикла. Как вы уже упоминали, вектор может быть на одинаковом расстоянии один, как 1:2:100. Но он также может быть произвольным, например for ii = [4,6,1,8] ....
В вашем случае вектор аргументов for является частично «равноотстоящим» вектором: 1:w:rd(1)-w-border плюс еще один элемент rd(1)-border+1.