В Matlab можно ли завершить скрипт, но сохранить все его внутренние переменные в рабочее пространство?
Я запускаю скрипт, но он занимает слишком много времени, поэтому я хочу закончить скрипт. Однако он рассчитал много данных, которые я бы в идеале не хотел выбрасывать. Есть ли альтернатива ctrl-C
с помощью которой вы сохраняете внутренние функциональные переменные в рабочей области?
В идеале я ищу ярлык для клавиатуры Matlab, например ctrl-C
, но если это действительно невозможно сделать, возможно, есть способ сделать это в скрипте моей функции. Любая идея, как позволить скрипту реагировать на ctrl-C
, или, может быть, элемент GUI, который я могу отменить, а затем я сохраняю переменные через свой скрипт?
Некоторые подобные вопросы я нашел, но которые не отвечают на мой вопрос:
- В чем разница между --save и -save-dev?
- Как получить координатную позицию после использования перетаскивания jQuery?
- Сколько раз я отпускаю выделенный или сохраненный объект?
- Проблемы с перезаписью (повторным сохранением) изображения, когда он был установлен как источник изображения
- захват себя в этом блоке, вероятно, приведет к циклу сохранения
закрыть / пауза
прекратить
Другой вопрос, похожий ответ:
dbstop
РЕДАКТИРОВАТЬ:
Этот вопрос отличается от того, что проблема, с которой сталкивается айзер, отличается: они хотят знать, где ошибка, что в моем случае говорит Matlab. Я просто хочу сохранить все данные из рабочей памяти, когда это произойдет.
- Поддерживает ли Google App Engine создание файлов и папок на сервере?
- Изображение, сохраненное на SD-карте, не отображается в приложении «Галерея Android»
- Как сделать снимок экрана в OpenGL
- Сохранить невидимый участок Matlab под терминалом как изображение с одинаковым размером
- Предупреждение об ошибке «Захват сильно в этом блоке, вероятно, приведет к циклу сохранения» в коде с поддержкой ARC
- Выбранное значение для JSP с помощью JSTL
- Как нарисовать текст На изображении?
- Android Сохранение созданного растрового изображения в каталог на SD-карте
MATLAB версии 2016a и более поздние версии
Если вы используете версии Matlab после 2016а, на самом деле появляется кнопка паузы, которая появляется при запуске скрипта (как описано @pedre). Это позволяет приостанавливать сценарий, проверять переменные и затем возобновлять его.
Не забудьте проверить следующий раздел, так как это может быть удобно.
Старые версии MATLAB
На самом деле трюк заключается в использовании dbstop if error
.
Сначала используйте это, затем запустите свой скрипт. Как только вы введете ошибку (например, с помощью Ctrl + C ), у вас будет возможность проверить / сохранить рабочие области вручную.
Вы не сможете возобновить выполнение сценария.
Вам просто нужно щелкнуть внутри своего скрипта, чтобы открыть страницу Editor
, а затем нажать паузу и увидеть все статические значения.
Коллега показал мне альтернативный способ включить это в мою функцию, waitbar
команду save()
к отмене waitbar
так:
%appoint emergency file location emergencysave = char(inputdlg({'fill in here:'}, 'windowtitle', 1, 'c:\defaultstringhere.mat')); %or just emergencysave = 'c:\emergencysave.mat'; %create some GUI element you can cancel times = 10; wbinfo = struct('curlength', {0.0}); wb = waitbar(wbinfo.curlength); wbinfo.wb = wb; %attach save() to cancelling anyimportantvariable = []; for i=1:times anyimportantvariable = [anyimportantvariable, i^2]; wbinfo.curlength = i/times; try waitbar(wbinfo.curlength, wb) catch save(emergencysave, 'anyimportantvariable'); return; end