Как я могу прервать выполнение программы в MATLAB?
Как я могу остановить выполнение программы в MATLAB, не выходя из MATLAB. Я ищу что-то вроде exit (1) в C ++.
Я пробовал выйти / выйти, но они также убивают MATLAB, чего я не хочу.
В идеале я бы использовал try-catch для всплывания ошибок, но я исправляю существующий код и не могу этого сделать из-за глубоко вложенного стека вызовов. Спасибо!
Я также пробовал error и return , но они попадают в блок catch вызова функций, чего я тоже не хочу. Я просто хочу остановить запущенную программу для выхода.
Кроме того, Ctrl-C требует, чтобы пользователь остановил выполнение, а я тоже этого не хочу.


То, что вы хотите, является эквивалентом CTRL-C, но должно выполняться с помощью команды вместо фактического нажатия клавиши пользователя . @Yuk предложил использовать Java- робота для имитации этого нажатия клавиш . Этот метод прекрасно использовал @Pursuit в своей функции под названием terminateExecution . Другое решение на основе Java interrupt было предложено @MattB.
terminateExecution Я считаю, что для надежного использования необходимо pause сразу после этого вызвать короткое замыкание, чтобы дать Java время отправить нажатие клавиши и чтобы MATLAB обработал его. Все гнездовые try — catch заявления будут разбиты, как я думаю , что вам нужно.
killTest.m
Пример
Вы возвращаетесь в командную строку прямо из подфункции , но похоже, что программа была прервана нажатием клавиши:
Если вы вместо этого используете error (раскомментируйте строку ошибки внутри annoyingFunction для проверки), она будет поймана catch оператором в killTest :
Предлагаемые изменения interrupt (упрощения, более надежное получение дескриптора командного окна и удобочитаемость):
Примечание. Если у вас все в порядке с вводом чего-то, чтобы полностью выйти, просто используйте keyboard и, когда он остановится в строке отладки ( K>> ), dbquit и вы вернетесь в командную строку базовой рабочей области. Мило способ обеспечить интерактивный триггер , чтобы выполнить dbquit был обеспечить на MATLAB Центрального чтения новостей . Моя версия этого решения:
Когда этот фрагмент кода запускается, вы получаете небольшую подсказку вроде этого:
Тексты «Да» и «Нет» будут активными и будут выполнены dbquit либо dbcont .
How to abort a running program in MATLAB?
Sometimes after calling a function (which takes some 30 odd minutes to finish), you realize that you did something wrong and want to stop the program.
How do you do that in MATLAB?
What I do is shutdown MATLAB completely and restart. I think there would be a way to abort the execution of the function instead.
Anybody know what that is?
1 Answer 1
Hitting Ctrl + C usually does the trick, although sometimes it has been known to run into snags.
Not the answer you're looking for? Browse other questions tagged matlab process abort or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
pause
pause временно остановки MATLAB ® выполнение и ожидает пользователя, чтобы нажать любую клавишу. pause функционируйте также временно останавливает выполнение Simulink ® модели, но не приостанавливает их перекрашивание.
Примечание
Если вы ранее отключили установку паузы, повторно включите ее с помощью pause(‘on’) для этого вызова, чтобы вступить в силу.
pause( n ) приостанавливает выполнение для n за секунды до продолжения. Приостановка должна быть позволена для этого вызова вступить в силу.
pause( state ) включает, отключает или отображает текущую установку паузы.
oldState = pause( state ) возвращает текущую установку паузы и устанавливает состояние паузы, как обозначено state . Например, если приостановка включена, oldState = pause(‘off’) возвращает ‘on’ в oldState и отключает приостановку.
Примеры
Приостановка выполнения
Приостановите выполнение в течение 5 секунд. Блоки MATLAB, или скрывается, командная строка ( >> ) в то время как это приостанавливает выполнение.
Отключите приостанавливают установку
Отключите установку паузы и запросите текущее состояние.
Приостановите выполнение в течение 100 секунд. Поскольку установка паузы выключена, MATLAB игнорирует просьбу приостановить выполнение, и сразу возвращает командную строку.
Включите установку паузы.
Сохраните и восстановление приостанавливают состояние
Сохраните текущую установку паузы и затем отключите способность приостановить выполнение.
Запросите текущую установку паузы.
Восстановите начальное состояние паузы.
В качестве альтернативы можно сохранить запрошенное значение состояния паузы и затем отключить способность приостановить выполнение.
Восстановите начальное состояние паузы.
Входные параметры
n — Номер секунд
неотрицательное, вещественное число
Номер секунд, чтобы приостановить выполнение, заданное как неотрицательное, вещественное число.
Ввод pause(inf) помещает вас в бесконечный цикл. Чтобы возвратиться к подсказке MATLAB, введите Ctrl+C.
Пример: pause(3) делает паузу в течение 3 секунд.
Пример: pause(5/1000) делает паузу для 5 миллисекунд.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
state — Установка Pause
‘on’ | ‘off’ | ‘query’
Приостановите индикатор управления, заданный как ‘on’ off , или ‘query’ . Используйте ‘on’ или ‘off’ управлять ли pause функция может приостановить выполнение MATLAB. Используйте ‘query’ запрашивать текущее состояние установки паузы.
Чтобы запустить интерактивный необслуживаемый код, отключите установку паузы.
Советы
Точность pause функция подвергается разрешению планирования вашей операционной системы, и к другому параллельному системному действию. Точность не гарантируется, и более прекрасные результаты разрешения в более высокой относительной погрешности.
В то время как MATLAB приостановлен, следующее продолжите выполняться:
Перекрашивая окон рисунка, Диаграмм Simulink и Java ® windows
Коллбэки из окон рисунка
Обработка событий из окон Java
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.
Указания и ограничения по применению:
Использование pause \in parfor циклы не поддерживаются для генерации кода MEX.
Сгенерированный код обрезает, приостанавливают значения задержки к uint32 расположитесь во время выполнения во время выполнения.
В автономном сгенерированном ( lib , dll , или exe ) код, pause синтаксис без входных параметров имеет различное поведение, чем в MATLAB.
В MATLAB, после pause выполнение можно нажать любую клавишу, чтобы продолжиться. При выполнении сгенерированного кода от терминала необходимо нажать Enter.
Если вы вызываете сгенерированный код из MATLAB с system команда или символ восклицательного знака, с SIL, или с PIL, вводимые символы не могут быть правильно перенаправлены от среды MATLAB до сгенерированного кода. Поэтому сгенерированный код не может возобновиться.
Реализация C/C++ для pause в сгенерированном коде отличается в зависимости от аппаратных настроек, сохраненных в объекте настройки генерации кода. По умолчанию аппаратные настройки сконфигурированы для серверной платформы с Hardware Board в наборе приложения MATLAB Coder™ к MATLAB Host Computer .
При генерации кода по Windows ® с совместимыми с Windows аппаратными настройками сгенерированная реализация C/C++ использует Windows API function Sleep .
Во всех других случаях реализация использует API POSIX nanosleep . При компиляции кода, который использует API POSIX, макрос препроцессора _POSIX_C_SOURCE должен быть установлен в целое число, больше, чем или равный 199309L . Генератор кода устанавливает макрос на 199309L для компиляции.
Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .
Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.