2014-02-05 5 views
0

В следующем коде я хочу, чтобы a и b увеличивались на 1 каждый раз, когда выполняются вычисления. Может кто-то пожалуйста, посмотри:кодирование для повторного увеличения

for t = 1:20 

    a = 2; 
    b = 2; 

    r = a + b; 

    if r<5 
     display('reaching target') 

    elseif r>5 
     disp('job done') 

    end 

    a = a+1; 
    b = b+1; 

end 

Если я запускаю это, она будет показать мне достичь цели на 20 раз на экране, то есть для t = 1, a = 2, b = 2 и r = 4, который менее чем-так отображая идущие цели правда. Следующий шаг, t = 2, я хочу, чтобы a увеличился до 3 из 2 и b = 3 (с шагом 1), а затем r = 6, который больше 5, поэтому он должен отображать 'job done', но это не так. Что не так?

+3

Я вижу, что a и b действительно увеличиваются на 1. В чем именно проблема? –

+0

Опишите предполагаемое поведение! – Daniel

+0

, поэтому, если я запустил это, он покажет мне достижение цели 20 раз на экране. значение для t = 1, a = 2, b = 2 и r = 4, что меньше 5, так что отображение целевой цели истинно. следующий шаг, t = 2, я хочу, чтобы a увеличилось до 3 от 2 и b = 3 (приращение на 1). а затем r = 6, который больше 5, поэтому он должен отображать выполненную работу, но не делает этого. Я действительно смущен! – user3276258

ответ

0

Вы переназначить значение 2 для обоих a и b при каждом запуске цикла, r всегда будет равен 4. Возьмем инициализацию a и b из петли.

a = 2; 
b = 2; 
for t = 1:20 
    r = a + b; 

    if r<5 
     display('reaching target') 

    elseif r>5 
     disp('job done') 

    end 

    a = a+1; 
    b = b+1; 

end 
+0

еще одна вещь, допустим, если my a - это набор значений, таких как a is (x, y) и b также (m, n). то как я могу увеличить x, y, m, n на 1 на каждом шаге? спасибо – user3276258

+0

@ user3276258 он будет работать как есть. Matlab автоматически распределяет дополнения на элементах векторов. Итак, '[1 2] +1 = [2 3]' –

+0

, но тогда я хочу, чтобы он добавлял x и m отдельно и y и n отдельно, а затем вычислял r, используя sqrt ((x + m)^2 + (y + n)^2). который, я думаю, не может этого сделать? – user3276258

Смежные вопросы