2016-10-22 1 views
0

Вот базовая настройка. Я пытаюсь создать цикл while, который будет выполнять итерацию до тех пор, пока заданное условие не будет ниже определенного допуска. Однако этот цикл должен быть обобщен для нескольких значений в одной и той же матрице. Пример (упрощенный от того, что я в настоящее время пытаюсь выполнить):Multi Condition While Loop (с несколькими условиями в пределах одной и той же переменной)

x = [3; 2] 
tolerance = [0,0] 
iter = 0 
while x > tolerance 
x = x - 1; 
iter = iter + 1; 
end 

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

Любая помощь была бы принята с благодарностью.

ответ

2

У Matlab есть пара связанных функций, any и all, которые помогают в этом.

any, который возвращает true, если какой-либо из элементов truthy, поможет здесь:

while any(x>tolerance) 
    ... 
end 

Вы можете также сделать другие приемы, как

while sum(x>tolerance) > 0 

, чтобы достичь того же, но Мне нравится, как семантически ясно any есть.

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

  • Нет связанных вопросов^_^