MATLAB documentation описывает break
ключевое слово, таким образом:Идиоматический способ выхода из нескольких вложенных циклов?
break
завершает выполнение для или во время цикла. Выражения в цикле после оператора break не выполняются.- Во вложенных циклах разрывайте выходы только из цикла, в котором оно происходит. Контроль переходит к утверждению, которое следует за концом этого цикла.
(курсив мой)
Что делать, если вы хотите, чтобы выйти из нескольких вложенных циклов? Другие языки, такие как Java, предлагают labelled breaks, которые позволяют указать, куда следует передавать поток управления, но MATLAB не имеет такого механизма.
Рассмотрим следующий пример:
% assume A to be a 2D array
% nested 'for' loops
for j = 1 : n
for i = 1 : m
if f(A(i, j)) % where f is a predicate
break; % if want to break from both loops, not just the inner one
else
% do something interesting with A
end
end
% <--- the break transfers control to here...
end
% <--- ... but I want to transfer control to here
Что такое идиоматических способ (в MATLAB) из выхода из обеих петель?
Возможный дубликат [как выйти из двух вложенных циклов в Matlab] (http://stackoverflow.com/questions/20302746/how-to-exit-from-two-nested-for-loop-in-matlab) – michaelsnowden
Я бы просто извлек функцию и вернусь из нее – michaelsnowden
Вам нужно использовать другой механизм для выхода из всех вложенных циклов. Например. добавьте больше if или передайте весь цикл-strucutre в функцию, а затем используйте 'return' вместо' break' – rst